package br.ufrn.dimap.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import br.ufrn.dimap.services.ProcessDslGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalProcessDslParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'process'", "'{'", "'disciplines {'", "'}'", "'roles {'", "'role {'", "'artifacts {'", "'artifact {'", "'tasks {'", "'task {'", "'guidances {'", "'lifecyle {'", "'discipline'", "'name'", "'description'", "'domain'", "'purpose'", "'steps {'", "'primary'", "'additional'", "'input'", "'output'", "'mandatory'", "'opcional'", "'previous'", "'phase {'", "'iterations {'", "'iteration {'", "'activitys {'", "'activity {'", "'next'", "'checklist {'", "'checkitems {'", "'concept {'", "'example {'", "'guideline {'", "'practice {'", "'reference {'", "'report {'", "'roadmap {'", "'template {'"
    };
    public static final int RULE_ID=5;
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int EOF=-1;
    public static final int T__19=19;
    public static final int T__51=51;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__12=12;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=6;
    public static final int T__50=50;
    public static final int T__42=42;
    public static final int T__43=43;
    public static final int T__40=40;
    public static final int T__41=41;
    public static final int T__46=46;
    public static final int T__47=47;
    public static final int T__44=44;
    public static final int T__45=45;
    public static final int T__48=48;
    public static final int T__49=49;
    public static final int RULE_SL_COMMENT=8;
    public static final int RULE_ML_COMMENT=7;
    public static final int T__30=30;
    public static final int T__31=31;
    public static final int RULE_STRING=4;
    public static final int T__32=32;
    public static final int T__33=33;
    public static final int T__34=34;
    public static final int T__35=35;
    public static final int T__36=36;
    public static final int T__37=37;
    public static final int T__38=38;
    public static final int T__39=39;
    public static final int RULE_WS=9;

    // delegates
    // delegators


        public InternalProcessDslParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalProcessDslParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalProcessDslParser.tokenNames; }
    public String getGrammarFileName() { return "../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g"; }



     	private ProcessDslGrammarAccess grammarAccess;
     	
        public InternalProcessDslParser(TokenStream input, ProcessDslGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "Model";	
       	}
       	
       	@Override
       	protected ProcessDslGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleModel"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:67:1: entryRuleModel returns [EObject current=null] : iv_ruleModel= ruleModel EOF ;
    public final EObject entryRuleModel() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleModel = null;


        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:68:2: (iv_ruleModel= ruleModel EOF )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:69:2: iv_ruleModel= ruleModel EOF
            {
             newCompositeNode(grammarAccess.getModelRule()); 
            pushFollow(FOLLOW_ruleModel_in_entryRuleModel75);
            iv_ruleModel=ruleModel();

            state._fsp--;

             current =iv_ruleModel; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleModel85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleModel"


    // $ANTLR start "ruleModel"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:76:1: ruleModel returns [EObject current=null] : ( (lv_process_0_0= ruleProcess ) ) ;
    public final EObject ruleModel() throws RecognitionException {
        EObject current = null;

        EObject lv_process_0_0 = null;


         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:79:28: ( ( (lv_process_0_0= ruleProcess ) ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:80:1: ( (lv_process_0_0= ruleProcess ) )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:80:1: ( (lv_process_0_0= ruleProcess ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:81:1: (lv_process_0_0= ruleProcess )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:81:1: (lv_process_0_0= ruleProcess )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:82:3: lv_process_0_0= ruleProcess
            {
             
            	        newCompositeNode(grammarAccess.getModelAccess().getProcessProcessParserRuleCall_0()); 
            	    
            pushFollow(FOLLOW_ruleProcess_in_ruleModel130);
            lv_process_0_0=ruleProcess();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getModelRule());
            	        }
                   		add(
                   			current, 
                   			"process",
                    		lv_process_0_0, 
                    		"Process");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleModel"


    // $ANTLR start "entryRuleProcess"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:106:1: entryRuleProcess returns [EObject current=null] : iv_ruleProcess= ruleProcess EOF ;
    public final EObject entryRuleProcess() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleProcess = null;


        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:107:2: (iv_ruleProcess= ruleProcess EOF )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:108:2: iv_ruleProcess= ruleProcess EOF
            {
             newCompositeNode(grammarAccess.getProcessRule()); 
            pushFollow(FOLLOW_ruleProcess_in_entryRuleProcess165);
            iv_ruleProcess=ruleProcess();

            state._fsp--;

             current =iv_ruleProcess; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleProcess175); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleProcess"


    // $ANTLR start "ruleProcess"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:115:1: ruleProcess returns [EObject current=null] : (otherlv_0= 'process' ( (lv_name_1_0= RULE_STRING ) ) otherlv_2= '{' ( (otherlv_3= 'disciplines {' ( (lv_disciplines_4_0= ruleDiscipline ) )* otherlv_5= '}' ) | (otherlv_6= 'roles {' (otherlv_7= 'role {' ( (lv_roles_8_0= ruleRole ) ) otherlv_9= '}' )* otherlv_10= '}' ) | (otherlv_11= 'artifacts {' (otherlv_12= 'artifact {' ( (lv_artifacts_13_0= ruleArtifact ) ) otherlv_14= '}' )* otherlv_15= '}' ) | (otherlv_16= 'tasks {' (otherlv_17= 'task {' ( (lv_tasks_18_0= ruleTask ) ) otherlv_19= '}' )* otherlv_20= '}' ) | (otherlv_21= 'guidances {' ( ( (lv_guidances_22_1= ruleChecklist | lv_guidances_22_2= ruleConcept | lv_guidances_22_3= ruleExample | lv_guidances_22_4= ruleGuideline | lv_guidances_22_5= rulePractice | lv_guidances_22_6= ruleReference | lv_guidances_22_7= ruleReport | lv_guidances_22_8= ruleRoadmap | lv_guidances_22_9= ruleTemplate ) ) )* otherlv_23= '}' ) )* otherlv_24= 'lifecyle {' ( ( (lv_lifecyleElement_25_1= rulePhase | lv_lifecyleElement_25_2= ruleIteration | lv_lifecyleElement_25_3= ruleActivity ) ) )* otherlv_26= '}' otherlv_27= '}' ) ;
    public final EObject ruleProcess() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token otherlv_10=null;
        Token otherlv_11=null;
        Token otherlv_12=null;
        Token otherlv_14=null;
        Token otherlv_15=null;
        Token otherlv_16=null;
        Token otherlv_17=null;
        Token otherlv_19=null;
        Token otherlv_20=null;
        Token otherlv_21=null;
        Token otherlv_23=null;
        Token otherlv_24=null;
        Token otherlv_26=null;
        Token otherlv_27=null;
        EObject lv_disciplines_4_0 = null;

        EObject lv_roles_8_0 = null;

        EObject lv_artifacts_13_0 = null;

        EObject lv_tasks_18_0 = null;

        EObject lv_guidances_22_1 = null;

        EObject lv_guidances_22_2 = null;

        EObject lv_guidances_22_3 = null;

        EObject lv_guidances_22_4 = null;

        EObject lv_guidances_22_5 = null;

        EObject lv_guidances_22_6 = null;

        EObject lv_guidances_22_7 = null;

        EObject lv_guidances_22_8 = null;

        EObject lv_guidances_22_9 = null;

        EObject lv_lifecyleElement_25_1 = null;

        EObject lv_lifecyleElement_25_2 = null;

        EObject lv_lifecyleElement_25_3 = null;


         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:118:28: ( (otherlv_0= 'process' ( (lv_name_1_0= RULE_STRING ) ) otherlv_2= '{' ( (otherlv_3= 'disciplines {' ( (lv_disciplines_4_0= ruleDiscipline ) )* otherlv_5= '}' ) | (otherlv_6= 'roles {' (otherlv_7= 'role {' ( (lv_roles_8_0= ruleRole ) ) otherlv_9= '}' )* otherlv_10= '}' ) | (otherlv_11= 'artifacts {' (otherlv_12= 'artifact {' ( (lv_artifacts_13_0= ruleArtifact ) ) otherlv_14= '}' )* otherlv_15= '}' ) | (otherlv_16= 'tasks {' (otherlv_17= 'task {' ( (lv_tasks_18_0= ruleTask ) ) otherlv_19= '}' )* otherlv_20= '}' ) | (otherlv_21= 'guidances {' ( ( (lv_guidances_22_1= ruleChecklist | lv_guidances_22_2= ruleConcept | lv_guidances_22_3= ruleExample | lv_guidances_22_4= ruleGuideline | lv_guidances_22_5= rulePractice | lv_guidances_22_6= ruleReference | lv_guidances_22_7= ruleReport | lv_guidances_22_8= ruleRoadmap | lv_guidances_22_9= ruleTemplate ) ) )* otherlv_23= '}' ) )* otherlv_24= 'lifecyle {' ( ( (lv_lifecyleElement_25_1= rulePhase | lv_lifecyleElement_25_2= ruleIteration | lv_lifecyleElement_25_3= ruleActivity ) ) )* otherlv_26= '}' otherlv_27= '}' ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:119:1: (otherlv_0= 'process' ( (lv_name_1_0= RULE_STRING ) ) otherlv_2= '{' ( (otherlv_3= 'disciplines {' ( (lv_disciplines_4_0= ruleDiscipline ) )* otherlv_5= '}' ) | (otherlv_6= 'roles {' (otherlv_7= 'role {' ( (lv_roles_8_0= ruleRole ) ) otherlv_9= '}' )* otherlv_10= '}' ) | (otherlv_11= 'artifacts {' (otherlv_12= 'artifact {' ( (lv_artifacts_13_0= ruleArtifact ) ) otherlv_14= '}' )* otherlv_15= '}' ) | (otherlv_16= 'tasks {' (otherlv_17= 'task {' ( (lv_tasks_18_0= ruleTask ) ) otherlv_19= '}' )* otherlv_20= '}' ) | (otherlv_21= 'guidances {' ( ( (lv_guidances_22_1= ruleChecklist | lv_guidances_22_2= ruleConcept | lv_guidances_22_3= ruleExample | lv_guidances_22_4= ruleGuideline | lv_guidances_22_5= rulePractice | lv_guidances_22_6= ruleReference | lv_guidances_22_7= ruleReport | lv_guidances_22_8= ruleRoadmap | lv_guidances_22_9= ruleTemplate ) ) )* otherlv_23= '}' ) )* otherlv_24= 'lifecyle {' ( ( (lv_lifecyleElement_25_1= rulePhase | lv_lifecyleElement_25_2= ruleIteration | lv_lifecyleElement_25_3= ruleActivity ) ) )* otherlv_26= '}' otherlv_27= '}' )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:119:1: (otherlv_0= 'process' ( (lv_name_1_0= RULE_STRING ) ) otherlv_2= '{' ( (otherlv_3= 'disciplines {' ( (lv_disciplines_4_0= ruleDiscipline ) )* otherlv_5= '}' ) | (otherlv_6= 'roles {' (otherlv_7= 'role {' ( (lv_roles_8_0= ruleRole ) ) otherlv_9= '}' )* otherlv_10= '}' ) | (otherlv_11= 'artifacts {' (otherlv_12= 'artifact {' ( (lv_artifacts_13_0= ruleArtifact ) ) otherlv_14= '}' )* otherlv_15= '}' ) | (otherlv_16= 'tasks {' (otherlv_17= 'task {' ( (lv_tasks_18_0= ruleTask ) ) otherlv_19= '}' )* otherlv_20= '}' ) | (otherlv_21= 'guidances {' ( ( (lv_guidances_22_1= ruleChecklist | lv_guidances_22_2= ruleConcept | lv_guidances_22_3= ruleExample | lv_guidances_22_4= ruleGuideline | lv_guidances_22_5= rulePractice | lv_guidances_22_6= ruleReference | lv_guidances_22_7= ruleReport | lv_guidances_22_8= ruleRoadmap | lv_guidances_22_9= ruleTemplate ) ) )* otherlv_23= '}' ) )* otherlv_24= 'lifecyle {' ( ( (lv_lifecyleElement_25_1= rulePhase | lv_lifecyleElement_25_2= ruleIteration | lv_lifecyleElement_25_3= ruleActivity ) ) )* otherlv_26= '}' otherlv_27= '}' )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:119:3: otherlv_0= 'process' ( (lv_name_1_0= RULE_STRING ) ) otherlv_2= '{' ( (otherlv_3= 'disciplines {' ( (lv_disciplines_4_0= ruleDiscipline ) )* otherlv_5= '}' ) | (otherlv_6= 'roles {' (otherlv_7= 'role {' ( (lv_roles_8_0= ruleRole ) ) otherlv_9= '}' )* otherlv_10= '}' ) | (otherlv_11= 'artifacts {' (otherlv_12= 'artifact {' ( (lv_artifacts_13_0= ruleArtifact ) ) otherlv_14= '}' )* otherlv_15= '}' ) | (otherlv_16= 'tasks {' (otherlv_17= 'task {' ( (lv_tasks_18_0= ruleTask ) ) otherlv_19= '}' )* otherlv_20= '}' ) | (otherlv_21= 'guidances {' ( ( (lv_guidances_22_1= ruleChecklist | lv_guidances_22_2= ruleConcept | lv_guidances_22_3= ruleExample | lv_guidances_22_4= ruleGuideline | lv_guidances_22_5= rulePractice | lv_guidances_22_6= ruleReference | lv_guidances_22_7= ruleReport | lv_guidances_22_8= ruleRoadmap | lv_guidances_22_9= ruleTemplate ) ) )* otherlv_23= '}' ) )* otherlv_24= 'lifecyle {' ( ( (lv_lifecyleElement_25_1= rulePhase | lv_lifecyleElement_25_2= ruleIteration | lv_lifecyleElement_25_3= ruleActivity ) ) )* otherlv_26= '}' otherlv_27= '}'
            {
            otherlv_0=(Token)match(input,11,FOLLOW_11_in_ruleProcess212); 

                	newLeafNode(otherlv_0, grammarAccess.getProcessAccess().getProcessKeyword_0());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:123:1: ( (lv_name_1_0= RULE_STRING ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:124:1: (lv_name_1_0= RULE_STRING )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:124:1: (lv_name_1_0= RULE_STRING )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:125:3: lv_name_1_0= RULE_STRING
            {
            lv_name_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleProcess229); 

            			newLeafNode(lv_name_1_0, grammarAccess.getProcessAccess().getNameSTRINGTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getProcessRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"STRING");
            	    

            }


            }

            otherlv_2=(Token)match(input,12,FOLLOW_12_in_ruleProcess246); 

                	newLeafNode(otherlv_2, grammarAccess.getProcessAccess().getLeftCurlyBracketKeyword_2());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:145:1: ( (otherlv_3= 'disciplines {' ( (lv_disciplines_4_0= ruleDiscipline ) )* otherlv_5= '}' ) | (otherlv_6= 'roles {' (otherlv_7= 'role {' ( (lv_roles_8_0= ruleRole ) ) otherlv_9= '}' )* otherlv_10= '}' ) | (otherlv_11= 'artifacts {' (otherlv_12= 'artifact {' ( (lv_artifacts_13_0= ruleArtifact ) ) otherlv_14= '}' )* otherlv_15= '}' ) | (otherlv_16= 'tasks {' (otherlv_17= 'task {' ( (lv_tasks_18_0= ruleTask ) ) otherlv_19= '}' )* otherlv_20= '}' ) | (otherlv_21= 'guidances {' ( ( (lv_guidances_22_1= ruleChecklist | lv_guidances_22_2= ruleConcept | lv_guidances_22_3= ruleExample | lv_guidances_22_4= ruleGuideline | lv_guidances_22_5= rulePractice | lv_guidances_22_6= ruleReference | lv_guidances_22_7= ruleReport | lv_guidances_22_8= ruleRoadmap | lv_guidances_22_9= ruleTemplate ) ) )* otherlv_23= '}' ) )*
            loop7:
            do {
                int alt7=6;
                switch ( input.LA(1) ) {
                case 13:
                    {
                    alt7=1;
                    }
                    break;
                case 15:
                    {
                    alt7=2;
                    }
                    break;
                case 17:
                    {
                    alt7=3;
                    }
                    break;
                case 19:
                    {
                    alt7=4;
                    }
                    break;
                case 21:
                    {
                    alt7=5;
                    }
                    break;

                }

                switch (alt7) {
            	case 1 :
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:145:2: (otherlv_3= 'disciplines {' ( (lv_disciplines_4_0= ruleDiscipline ) )* otherlv_5= '}' )
            	    {
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:145:2: (otherlv_3= 'disciplines {' ( (lv_disciplines_4_0= ruleDiscipline ) )* otherlv_5= '}' )
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:145:4: otherlv_3= 'disciplines {' ( (lv_disciplines_4_0= ruleDiscipline ) )* otherlv_5= '}'
            	    {
            	    otherlv_3=(Token)match(input,13,FOLLOW_13_in_ruleProcess260); 

            	        	newLeafNode(otherlv_3, grammarAccess.getProcessAccess().getDisciplinesKeyword_3_0_0());
            	        
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:149:1: ( (lv_disciplines_4_0= ruleDiscipline ) )*
            	    loop1:
            	    do {
            	        int alt1=2;
            	        int LA1_0 = input.LA(1);

            	        if ( (LA1_0==23) ) {
            	            alt1=1;
            	        }


            	        switch (alt1) {
            	    	case 1 :
            	    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:150:1: (lv_disciplines_4_0= ruleDiscipline )
            	    	    {
            	    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:150:1: (lv_disciplines_4_0= ruleDiscipline )
            	    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:151:3: lv_disciplines_4_0= ruleDiscipline
            	    	    {
            	    	     
            	    	    	        newCompositeNode(grammarAccess.getProcessAccess().getDisciplinesDisciplineParserRuleCall_3_0_1_0()); 
            	    	    	    
            	    	    pushFollow(FOLLOW_ruleDiscipline_in_ruleProcess281);
            	    	    lv_disciplines_4_0=ruleDiscipline();

            	    	    state._fsp--;


            	    	    	        if (current==null) {
            	    	    	            current = createModelElementForParent(grammarAccess.getProcessRule());
            	    	    	        }
            	    	           		add(
            	    	           			current, 
            	    	           			"disciplines",
            	    	            		lv_disciplines_4_0, 
            	    	            		"Discipline");
            	    	    	        afterParserOrEnumRuleCall();
            	    	    	    

            	    	    }


            	    	    }
            	    	    break;

            	    	default :
            	    	    break loop1;
            	        }
            	    } while (true);

            	    otherlv_5=(Token)match(input,14,FOLLOW_14_in_ruleProcess294); 

            	        	newLeafNode(otherlv_5, grammarAccess.getProcessAccess().getRightCurlyBracketKeyword_3_0_2());
            	        

            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:172:6: (otherlv_6= 'roles {' (otherlv_7= 'role {' ( (lv_roles_8_0= ruleRole ) ) otherlv_9= '}' )* otherlv_10= '}' )
            	    {
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:172:6: (otherlv_6= 'roles {' (otherlv_7= 'role {' ( (lv_roles_8_0= ruleRole ) ) otherlv_9= '}' )* otherlv_10= '}' )
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:172:8: otherlv_6= 'roles {' (otherlv_7= 'role {' ( (lv_roles_8_0= ruleRole ) ) otherlv_9= '}' )* otherlv_10= '}'
            	    {
            	    otherlv_6=(Token)match(input,15,FOLLOW_15_in_ruleProcess314); 

            	        	newLeafNode(otherlv_6, grammarAccess.getProcessAccess().getRolesKeyword_3_1_0());
            	        
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:176:1: (otherlv_7= 'role {' ( (lv_roles_8_0= ruleRole ) ) otherlv_9= '}' )*
            	    loop2:
            	    do {
            	        int alt2=2;
            	        int LA2_0 = input.LA(1);

            	        if ( (LA2_0==16) ) {
            	            alt2=1;
            	        }


            	        switch (alt2) {
            	    	case 1 :
            	    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:176:3: otherlv_7= 'role {' ( (lv_roles_8_0= ruleRole ) ) otherlv_9= '}'
            	    	    {
            	    	    otherlv_7=(Token)match(input,16,FOLLOW_16_in_ruleProcess327); 

            	    	        	newLeafNode(otherlv_7, grammarAccess.getProcessAccess().getRoleKeyword_3_1_1_0());
            	    	        
            	    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:180:1: ( (lv_roles_8_0= ruleRole ) )
            	    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:181:1: (lv_roles_8_0= ruleRole )
            	    	    {
            	    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:181:1: (lv_roles_8_0= ruleRole )
            	    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:182:3: lv_roles_8_0= ruleRole
            	    	    {
            	    	     
            	    	    	        newCompositeNode(grammarAccess.getProcessAccess().getRolesRoleParserRuleCall_3_1_1_1_0()); 
            	    	    	    
            	    	    pushFollow(FOLLOW_ruleRole_in_ruleProcess348);
            	    	    lv_roles_8_0=ruleRole();

            	    	    state._fsp--;


            	    	    	        if (current==null) {
            	    	    	            current = createModelElementForParent(grammarAccess.getProcessRule());
            	    	    	        }
            	    	           		add(
            	    	           			current, 
            	    	           			"roles",
            	    	            		lv_roles_8_0, 
            	    	            		"Role");
            	    	    	        afterParserOrEnumRuleCall();
            	    	    	    

            	    	    }


            	    	    }

            	    	    otherlv_9=(Token)match(input,14,FOLLOW_14_in_ruleProcess360); 

            	    	        	newLeafNode(otherlv_9, grammarAccess.getProcessAccess().getRightCurlyBracketKeyword_3_1_1_2());
            	    	        

            	    	    }
            	    	    break;

            	    	default :
            	    	    break loop2;
            	        }
            	    } while (true);

            	    otherlv_10=(Token)match(input,14,FOLLOW_14_in_ruleProcess374); 

            	        	newLeafNode(otherlv_10, grammarAccess.getProcessAccess().getRightCurlyBracketKeyword_3_1_2());
            	        

            	    }


            	    }
            	    break;
            	case 3 :
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:207:6: (otherlv_11= 'artifacts {' (otherlv_12= 'artifact {' ( (lv_artifacts_13_0= ruleArtifact ) ) otherlv_14= '}' )* otherlv_15= '}' )
            	    {
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:207:6: (otherlv_11= 'artifacts {' (otherlv_12= 'artifact {' ( (lv_artifacts_13_0= ruleArtifact ) ) otherlv_14= '}' )* otherlv_15= '}' )
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:207:8: otherlv_11= 'artifacts {' (otherlv_12= 'artifact {' ( (lv_artifacts_13_0= ruleArtifact ) ) otherlv_14= '}' )* otherlv_15= '}'
            	    {
            	    otherlv_11=(Token)match(input,17,FOLLOW_17_in_ruleProcess394); 

            	        	newLeafNode(otherlv_11, grammarAccess.getProcessAccess().getArtifactsKeyword_3_2_0());
            	        
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:211:1: (otherlv_12= 'artifact {' ( (lv_artifacts_13_0= ruleArtifact ) ) otherlv_14= '}' )*
            	    loop3:
            	    do {
            	        int alt3=2;
            	        int LA3_0 = input.LA(1);

            	        if ( (LA3_0==18) ) {
            	            alt3=1;
            	        }


            	        switch (alt3) {
            	    	case 1 :
            	    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:211:3: otherlv_12= 'artifact {' ( (lv_artifacts_13_0= ruleArtifact ) ) otherlv_14= '}'
            	    	    {
            	    	    otherlv_12=(Token)match(input,18,FOLLOW_18_in_ruleProcess407); 

            	    	        	newLeafNode(otherlv_12, grammarAccess.getProcessAccess().getArtifactKeyword_3_2_1_0());
            	    	        
            	    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:215:1: ( (lv_artifacts_13_0= ruleArtifact ) )
            	    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:216:1: (lv_artifacts_13_0= ruleArtifact )
            	    	    {
            	    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:216:1: (lv_artifacts_13_0= ruleArtifact )
            	    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:217:3: lv_artifacts_13_0= ruleArtifact
            	    	    {
            	    	     
            	    	    	        newCompositeNode(grammarAccess.getProcessAccess().getArtifactsArtifactParserRuleCall_3_2_1_1_0()); 
            	    	    	    
            	    	    pushFollow(FOLLOW_ruleArtifact_in_ruleProcess428);
            	    	    lv_artifacts_13_0=ruleArtifact();

            	    	    state._fsp--;


            	    	    	        if (current==null) {
            	    	    	            current = createModelElementForParent(grammarAccess.getProcessRule());
            	    	    	        }
            	    	           		add(
            	    	           			current, 
            	    	           			"artifacts",
            	    	            		lv_artifacts_13_0, 
            	    	            		"Artifact");
            	    	    	        afterParserOrEnumRuleCall();
            	    	    	    

            	    	    }


            	    	    }

            	    	    otherlv_14=(Token)match(input,14,FOLLOW_14_in_ruleProcess440); 

            	    	        	newLeafNode(otherlv_14, grammarAccess.getProcessAccess().getRightCurlyBracketKeyword_3_2_1_2());
            	    	        

            	    	    }
            	    	    break;

            	    	default :
            	    	    break loop3;
            	        }
            	    } while (true);

            	    otherlv_15=(Token)match(input,14,FOLLOW_14_in_ruleProcess454); 

            	        	newLeafNode(otherlv_15, grammarAccess.getProcessAccess().getRightCurlyBracketKeyword_3_2_2());
            	        

            	    }


            	    }
            	    break;
            	case 4 :
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:242:6: (otherlv_16= 'tasks {' (otherlv_17= 'task {' ( (lv_tasks_18_0= ruleTask ) ) otherlv_19= '}' )* otherlv_20= '}' )
            	    {
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:242:6: (otherlv_16= 'tasks {' (otherlv_17= 'task {' ( (lv_tasks_18_0= ruleTask ) ) otherlv_19= '}' )* otherlv_20= '}' )
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:242:8: otherlv_16= 'tasks {' (otherlv_17= 'task {' ( (lv_tasks_18_0= ruleTask ) ) otherlv_19= '}' )* otherlv_20= '}'
            	    {
            	    otherlv_16=(Token)match(input,19,FOLLOW_19_in_ruleProcess474); 

            	        	newLeafNode(otherlv_16, grammarAccess.getProcessAccess().getTasksKeyword_3_3_0());
            	        
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:246:1: (otherlv_17= 'task {' ( (lv_tasks_18_0= ruleTask ) ) otherlv_19= '}' )*
            	    loop4:
            	    do {
            	        int alt4=2;
            	        int LA4_0 = input.LA(1);

            	        if ( (LA4_0==20) ) {
            	            alt4=1;
            	        }


            	        switch (alt4) {
            	    	case 1 :
            	    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:246:3: otherlv_17= 'task {' ( (lv_tasks_18_0= ruleTask ) ) otherlv_19= '}'
            	    	    {
            	    	    otherlv_17=(Token)match(input,20,FOLLOW_20_in_ruleProcess487); 

            	    	        	newLeafNode(otherlv_17, grammarAccess.getProcessAccess().getTaskKeyword_3_3_1_0());
            	    	        
            	    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:250:1: ( (lv_tasks_18_0= ruleTask ) )
            	    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:251:1: (lv_tasks_18_0= ruleTask )
            	    	    {
            	    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:251:1: (lv_tasks_18_0= ruleTask )
            	    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:252:3: lv_tasks_18_0= ruleTask
            	    	    {
            	    	     
            	    	    	        newCompositeNode(grammarAccess.getProcessAccess().getTasksTaskParserRuleCall_3_3_1_1_0()); 
            	    	    	    
            	    	    pushFollow(FOLLOW_ruleTask_in_ruleProcess508);
            	    	    lv_tasks_18_0=ruleTask();

            	    	    state._fsp--;


            	    	    	        if (current==null) {
            	    	    	            current = createModelElementForParent(grammarAccess.getProcessRule());
            	    	    	        }
            	    	           		add(
            	    	           			current, 
            	    	           			"tasks",
            	    	            		lv_tasks_18_0, 
            	    	            		"Task");
            	    	    	        afterParserOrEnumRuleCall();
            	    	    	    

            	    	    }


            	    	    }

            	    	    otherlv_19=(Token)match(input,14,FOLLOW_14_in_ruleProcess520); 

            	    	        	newLeafNode(otherlv_19, grammarAccess.getProcessAccess().getRightCurlyBracketKeyword_3_3_1_2());
            	    	        

            	    	    }
            	    	    break;

            	    	default :
            	    	    break loop4;
            	        }
            	    } while (true);

            	    otherlv_20=(Token)match(input,14,FOLLOW_14_in_ruleProcess534); 

            	        	newLeafNode(otherlv_20, grammarAccess.getProcessAccess().getRightCurlyBracketKeyword_3_3_2());
            	        

            	    }


            	    }
            	    break;
            	case 5 :
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:277:6: (otherlv_21= 'guidances {' ( ( (lv_guidances_22_1= ruleChecklist | lv_guidances_22_2= ruleConcept | lv_guidances_22_3= ruleExample | lv_guidances_22_4= ruleGuideline | lv_guidances_22_5= rulePractice | lv_guidances_22_6= ruleReference | lv_guidances_22_7= ruleReport | lv_guidances_22_8= ruleRoadmap | lv_guidances_22_9= ruleTemplate ) ) )* otherlv_23= '}' )
            	    {
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:277:6: (otherlv_21= 'guidances {' ( ( (lv_guidances_22_1= ruleChecklist | lv_guidances_22_2= ruleConcept | lv_guidances_22_3= ruleExample | lv_guidances_22_4= ruleGuideline | lv_guidances_22_5= rulePractice | lv_guidances_22_6= ruleReference | lv_guidances_22_7= ruleReport | lv_guidances_22_8= ruleRoadmap | lv_guidances_22_9= ruleTemplate ) ) )* otherlv_23= '}' )
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:277:8: otherlv_21= 'guidances {' ( ( (lv_guidances_22_1= ruleChecklist | lv_guidances_22_2= ruleConcept | lv_guidances_22_3= ruleExample | lv_guidances_22_4= ruleGuideline | lv_guidances_22_5= rulePractice | lv_guidances_22_6= ruleReference | lv_guidances_22_7= ruleReport | lv_guidances_22_8= ruleRoadmap | lv_guidances_22_9= ruleTemplate ) ) )* otherlv_23= '}'
            	    {
            	    otherlv_21=(Token)match(input,21,FOLLOW_21_in_ruleProcess554); 

            	        	newLeafNode(otherlv_21, grammarAccess.getProcessAccess().getGuidancesKeyword_3_4_0());
            	        
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:281:1: ( ( (lv_guidances_22_1= ruleChecklist | lv_guidances_22_2= ruleConcept | lv_guidances_22_3= ruleExample | lv_guidances_22_4= ruleGuideline | lv_guidances_22_5= rulePractice | lv_guidances_22_6= ruleReference | lv_guidances_22_7= ruleReport | lv_guidances_22_8= ruleRoadmap | lv_guidances_22_9= ruleTemplate ) ) )*
            	    loop6:
            	    do {
            	        int alt6=2;
            	        int LA6_0 = input.LA(1);

            	        if ( (LA6_0==42||(LA6_0>=44 && LA6_0<=51)) ) {
            	            alt6=1;
            	        }


            	        switch (alt6) {
            	    	case 1 :
            	    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:282:1: ( (lv_guidances_22_1= ruleChecklist | lv_guidances_22_2= ruleConcept | lv_guidances_22_3= ruleExample | lv_guidances_22_4= ruleGuideline | lv_guidances_22_5= rulePractice | lv_guidances_22_6= ruleReference | lv_guidances_22_7= ruleReport | lv_guidances_22_8= ruleRoadmap | lv_guidances_22_9= ruleTemplate ) )
            	    	    {
            	    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:282:1: ( (lv_guidances_22_1= ruleChecklist | lv_guidances_22_2= ruleConcept | lv_guidances_22_3= ruleExample | lv_guidances_22_4= ruleGuideline | lv_guidances_22_5= rulePractice | lv_guidances_22_6= ruleReference | lv_guidances_22_7= ruleReport | lv_guidances_22_8= ruleRoadmap | lv_guidances_22_9= ruleTemplate ) )
            	    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:283:1: (lv_guidances_22_1= ruleChecklist | lv_guidances_22_2= ruleConcept | lv_guidances_22_3= ruleExample | lv_guidances_22_4= ruleGuideline | lv_guidances_22_5= rulePractice | lv_guidances_22_6= ruleReference | lv_guidances_22_7= ruleReport | lv_guidances_22_8= ruleRoadmap | lv_guidances_22_9= ruleTemplate )
            	    	    {
            	    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:283:1: (lv_guidances_22_1= ruleChecklist | lv_guidances_22_2= ruleConcept | lv_guidances_22_3= ruleExample | lv_guidances_22_4= ruleGuideline | lv_guidances_22_5= rulePractice | lv_guidances_22_6= ruleReference | lv_guidances_22_7= ruleReport | lv_guidances_22_8= ruleRoadmap | lv_guidances_22_9= ruleTemplate )
            	    	    int alt5=9;
            	    	    switch ( input.LA(1) ) {
            	    	    case 42:
            	    	        {
            	    	        alt5=1;
            	    	        }
            	    	        break;
            	    	    case 44:
            	    	        {
            	    	        alt5=2;
            	    	        }
            	    	        break;
            	    	    case 45:
            	    	        {
            	    	        alt5=3;
            	    	        }
            	    	        break;
            	    	    case 46:
            	    	        {
            	    	        alt5=4;
            	    	        }
            	    	        break;
            	    	    case 47:
            	    	        {
            	    	        alt5=5;
            	    	        }
            	    	        break;
            	    	    case 48:
            	    	        {
            	    	        alt5=6;
            	    	        }
            	    	        break;
            	    	    case 49:
            	    	        {
            	    	        alt5=7;
            	    	        }
            	    	        break;
            	    	    case 50:
            	    	        {
            	    	        alt5=8;
            	    	        }
            	    	        break;
            	    	    case 51:
            	    	        {
            	    	        alt5=9;
            	    	        }
            	    	        break;
            	    	    default:
            	    	        NoViableAltException nvae =
            	    	            new NoViableAltException("", 5, 0, input);

            	    	        throw nvae;
            	    	    }

            	    	    switch (alt5) {
            	    	        case 1 :
            	    	            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:284:3: lv_guidances_22_1= ruleChecklist
            	    	            {
            	    	             
            	    	            	        newCompositeNode(grammarAccess.getProcessAccess().getGuidancesChecklistParserRuleCall_3_4_1_0_0()); 
            	    	            	    
            	    	            pushFollow(FOLLOW_ruleChecklist_in_ruleProcess577);
            	    	            lv_guidances_22_1=ruleChecklist();

            	    	            state._fsp--;


            	    	            	        if (current==null) {
            	    	            	            current = createModelElementForParent(grammarAccess.getProcessRule());
            	    	            	        }
            	    	                   		add(
            	    	                   			current, 
            	    	                   			"guidances",
            	    	                    		lv_guidances_22_1, 
            	    	                    		"Checklist");
            	    	            	        afterParserOrEnumRuleCall();
            	    	            	    

            	    	            }
            	    	            break;
            	    	        case 2 :
            	    	            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:299:8: lv_guidances_22_2= ruleConcept
            	    	            {
            	    	             
            	    	            	        newCompositeNode(grammarAccess.getProcessAccess().getGuidancesConceptParserRuleCall_3_4_1_0_1()); 
            	    	            	    
            	    	            pushFollow(FOLLOW_ruleConcept_in_ruleProcess596);
            	    	            lv_guidances_22_2=ruleConcept();

            	    	            state._fsp--;


            	    	            	        if (current==null) {
            	    	            	            current = createModelElementForParent(grammarAccess.getProcessRule());
            	    	            	        }
            	    	                   		add(
            	    	                   			current, 
            	    	                   			"guidances",
            	    	                    		lv_guidances_22_2, 
            	    	                    		"Concept");
            	    	            	        afterParserOrEnumRuleCall();
            	    	            	    

            	    	            }
            	    	            break;
            	    	        case 3 :
            	    	            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:314:8: lv_guidances_22_3= ruleExample
            	    	            {
            	    	             
            	    	            	        newCompositeNode(grammarAccess.getProcessAccess().getGuidancesExampleParserRuleCall_3_4_1_0_2()); 
            	    	            	    
            	    	            pushFollow(FOLLOW_ruleExample_in_ruleProcess615);
            	    	            lv_guidances_22_3=ruleExample();

            	    	            state._fsp--;


            	    	            	        if (current==null) {
            	    	            	            current = createModelElementForParent(grammarAccess.getProcessRule());
            	    	            	        }
            	    	                   		add(
            	    	                   			current, 
            	    	                   			"guidances",
            	    	                    		lv_guidances_22_3, 
            	    	                    		"Example");
            	    	            	        afterParserOrEnumRuleCall();
            	    	            	    

            	    	            }
            	    	            break;
            	    	        case 4 :
            	    	            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:329:8: lv_guidances_22_4= ruleGuideline
            	    	            {
            	    	             
            	    	            	        newCompositeNode(grammarAccess.getProcessAccess().getGuidancesGuidelineParserRuleCall_3_4_1_0_3()); 
            	    	            	    
            	    	            pushFollow(FOLLOW_ruleGuideline_in_ruleProcess634);
            	    	            lv_guidances_22_4=ruleGuideline();

            	    	            state._fsp--;


            	    	            	        if (current==null) {
            	    	            	            current = createModelElementForParent(grammarAccess.getProcessRule());
            	    	            	        }
            	    	                   		add(
            	    	                   			current, 
            	    	                   			"guidances",
            	    	                    		lv_guidances_22_4, 
            	    	                    		"Guideline");
            	    	            	        afterParserOrEnumRuleCall();
            	    	            	    

            	    	            }
            	    	            break;
            	    	        case 5 :
            	    	            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:344:8: lv_guidances_22_5= rulePractice
            	    	            {
            	    	             
            	    	            	        newCompositeNode(grammarAccess.getProcessAccess().getGuidancesPracticeParserRuleCall_3_4_1_0_4()); 
            	    	            	    
            	    	            pushFollow(FOLLOW_rulePractice_in_ruleProcess653);
            	    	            lv_guidances_22_5=rulePractice();

            	    	            state._fsp--;


            	    	            	        if (current==null) {
            	    	            	            current = createModelElementForParent(grammarAccess.getProcessRule());
            	    	            	        }
            	    	                   		add(
            	    	                   			current, 
            	    	                   			"guidances",
            	    	                    		lv_guidances_22_5, 
            	    	                    		"Practice");
            	    	            	        afterParserOrEnumRuleCall();
            	    	            	    

            	    	            }
            	    	            break;
            	    	        case 6 :
            	    	            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:359:8: lv_guidances_22_6= ruleReference
            	    	            {
            	    	             
            	    	            	        newCompositeNode(grammarAccess.getProcessAccess().getGuidancesReferenceParserRuleCall_3_4_1_0_5()); 
            	    	            	    
            	    	            pushFollow(FOLLOW_ruleReference_in_ruleProcess672);
            	    	            lv_guidances_22_6=ruleReference();

            	    	            state._fsp--;


            	    	            	        if (current==null) {
            	    	            	            current = createModelElementForParent(grammarAccess.getProcessRule());
            	    	            	        }
            	    	                   		add(
            	    	                   			current, 
            	    	                   			"guidances",
            	    	                    		lv_guidances_22_6, 
            	    	                    		"Reference");
            	    	            	        afterParserOrEnumRuleCall();
            	    	            	    

            	    	            }
            	    	            break;
            	    	        case 7 :
            	    	            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:374:8: lv_guidances_22_7= ruleReport
            	    	            {
            	    	             
            	    	            	        newCompositeNode(grammarAccess.getProcessAccess().getGuidancesReportParserRuleCall_3_4_1_0_6()); 
            	    	            	    
            	    	            pushFollow(FOLLOW_ruleReport_in_ruleProcess691);
            	    	            lv_guidances_22_7=ruleReport();

            	    	            state._fsp--;


            	    	            	        if (current==null) {
            	    	            	            current = createModelElementForParent(grammarAccess.getProcessRule());
            	    	            	        }
            	    	                   		add(
            	    	                   			current, 
            	    	                   			"guidances",
            	    	                    		lv_guidances_22_7, 
            	    	                    		"Report");
            	    	            	        afterParserOrEnumRuleCall();
            	    	            	    

            	    	            }
            	    	            break;
            	    	        case 8 :
            	    	            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:389:8: lv_guidances_22_8= ruleRoadmap
            	    	            {
            	    	             
            	    	            	        newCompositeNode(grammarAccess.getProcessAccess().getGuidancesRoadmapParserRuleCall_3_4_1_0_7()); 
            	    	            	    
            	    	            pushFollow(FOLLOW_ruleRoadmap_in_ruleProcess710);
            	    	            lv_guidances_22_8=ruleRoadmap();

            	    	            state._fsp--;


            	    	            	        if (current==null) {
            	    	            	            current = createModelElementForParent(grammarAccess.getProcessRule());
            	    	            	        }
            	    	                   		add(
            	    	                   			current, 
            	    	                   			"guidances",
            	    	                    		lv_guidances_22_8, 
            	    	                    		"Roadmap");
            	    	            	        afterParserOrEnumRuleCall();
            	    	            	    

            	    	            }
            	    	            break;
            	    	        case 9 :
            	    	            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:404:8: lv_guidances_22_9= ruleTemplate
            	    	            {
            	    	             
            	    	            	        newCompositeNode(grammarAccess.getProcessAccess().getGuidancesTemplateParserRuleCall_3_4_1_0_8()); 
            	    	            	    
            	    	            pushFollow(FOLLOW_ruleTemplate_in_ruleProcess729);
            	    	            lv_guidances_22_9=ruleTemplate();

            	    	            state._fsp--;


            	    	            	        if (current==null) {
            	    	            	            current = createModelElementForParent(grammarAccess.getProcessRule());
            	    	            	        }
            	    	                   		add(
            	    	                   			current, 
            	    	                   			"guidances",
            	    	                    		lv_guidances_22_9, 
            	    	                    		"Template");
            	    	            	        afterParserOrEnumRuleCall();
            	    	            	    

            	    	            }
            	    	            break;

            	    	    }


            	    	    }


            	    	    }
            	    	    break;

            	    	default :
            	    	    break loop6;
            	        }
            	    } while (true);

            	    otherlv_23=(Token)match(input,14,FOLLOW_14_in_ruleProcess745); 

            	        	newLeafNode(otherlv_23, grammarAccess.getProcessAccess().getRightCurlyBracketKeyword_3_4_2());
            	        

            	    }


            	    }
            	    break;

            	default :
            	    break loop7;
                }
            } while (true);

            otherlv_24=(Token)match(input,22,FOLLOW_22_in_ruleProcess760); 

                	newLeafNode(otherlv_24, grammarAccess.getProcessAccess().getLifecyleKeyword_4());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:430:1: ( ( (lv_lifecyleElement_25_1= rulePhase | lv_lifecyleElement_25_2= ruleIteration | lv_lifecyleElement_25_3= ruleActivity ) ) )*
            loop9:
            do {
                int alt9=2;
                int LA9_0 = input.LA(1);

                if ( (LA9_0==36||LA9_0==38||LA9_0==40) ) {
                    alt9=1;
                }


                switch (alt9) {
            	case 1 :
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:431:1: ( (lv_lifecyleElement_25_1= rulePhase | lv_lifecyleElement_25_2= ruleIteration | lv_lifecyleElement_25_3= ruleActivity ) )
            	    {
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:431:1: ( (lv_lifecyleElement_25_1= rulePhase | lv_lifecyleElement_25_2= ruleIteration | lv_lifecyleElement_25_3= ruleActivity ) )
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:432:1: (lv_lifecyleElement_25_1= rulePhase | lv_lifecyleElement_25_2= ruleIteration | lv_lifecyleElement_25_3= ruleActivity )
            	    {
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:432:1: (lv_lifecyleElement_25_1= rulePhase | lv_lifecyleElement_25_2= ruleIteration | lv_lifecyleElement_25_3= ruleActivity )
            	    int alt8=3;
            	    switch ( input.LA(1) ) {
            	    case 36:
            	        {
            	        alt8=1;
            	        }
            	        break;
            	    case 38:
            	        {
            	        alt8=2;
            	        }
            	        break;
            	    case 40:
            	        {
            	        alt8=3;
            	        }
            	        break;
            	    default:
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 8, 0, input);

            	        throw nvae;
            	    }

            	    switch (alt8) {
            	        case 1 :
            	            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:433:3: lv_lifecyleElement_25_1= rulePhase
            	            {
            	             
            	            	        newCompositeNode(grammarAccess.getProcessAccess().getLifecyleElementPhaseParserRuleCall_5_0_0()); 
            	            	    
            	            pushFollow(FOLLOW_rulePhase_in_ruleProcess783);
            	            lv_lifecyleElement_25_1=rulePhase();

            	            state._fsp--;


            	            	        if (current==null) {
            	            	            current = createModelElementForParent(grammarAccess.getProcessRule());
            	            	        }
            	                   		add(
            	                   			current, 
            	                   			"lifecyleElement",
            	                    		lv_lifecyleElement_25_1, 
            	                    		"Phase");
            	            	        afterParserOrEnumRuleCall();
            	            	    

            	            }
            	            break;
            	        case 2 :
            	            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:448:8: lv_lifecyleElement_25_2= ruleIteration
            	            {
            	             
            	            	        newCompositeNode(grammarAccess.getProcessAccess().getLifecyleElementIterationParserRuleCall_5_0_1()); 
            	            	    
            	            pushFollow(FOLLOW_ruleIteration_in_ruleProcess802);
            	            lv_lifecyleElement_25_2=ruleIteration();

            	            state._fsp--;


            	            	        if (current==null) {
            	            	            current = createModelElementForParent(grammarAccess.getProcessRule());
            	            	        }
            	                   		add(
            	                   			current, 
            	                   			"lifecyleElement",
            	                    		lv_lifecyleElement_25_2, 
            	                    		"Iteration");
            	            	        afterParserOrEnumRuleCall();
            	            	    

            	            }
            	            break;
            	        case 3 :
            	            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:463:8: lv_lifecyleElement_25_3= ruleActivity
            	            {
            	             
            	            	        newCompositeNode(grammarAccess.getProcessAccess().getLifecyleElementActivityParserRuleCall_5_0_2()); 
            	            	    
            	            pushFollow(FOLLOW_ruleActivity_in_ruleProcess821);
            	            lv_lifecyleElement_25_3=ruleActivity();

            	            state._fsp--;


            	            	        if (current==null) {
            	            	            current = createModelElementForParent(grammarAccess.getProcessRule());
            	            	        }
            	                   		add(
            	                   			current, 
            	                   			"lifecyleElement",
            	                    		lv_lifecyleElement_25_3, 
            	                    		"Activity");
            	            	        afterParserOrEnumRuleCall();
            	            	    

            	            }
            	            break;

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop9;
                }
            } while (true);

            otherlv_26=(Token)match(input,14,FOLLOW_14_in_ruleProcess837); 

                	newLeafNode(otherlv_26, grammarAccess.getProcessAccess().getRightCurlyBracketKeyword_6());
                
            otherlv_27=(Token)match(input,14,FOLLOW_14_in_ruleProcess849); 

                	newLeafNode(otherlv_27, grammarAccess.getProcessAccess().getRightCurlyBracketKeyword_7());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleProcess"


    // $ANTLR start "entryRuleDiscipline"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:497:1: entryRuleDiscipline returns [EObject current=null] : iv_ruleDiscipline= ruleDiscipline EOF ;
    public final EObject entryRuleDiscipline() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDiscipline = null;


        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:498:2: (iv_ruleDiscipline= ruleDiscipline EOF )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:499:2: iv_ruleDiscipline= ruleDiscipline EOF
            {
             newCompositeNode(grammarAccess.getDisciplineRule()); 
            pushFollow(FOLLOW_ruleDiscipline_in_entryRuleDiscipline885);
            iv_ruleDiscipline=ruleDiscipline();

            state._fsp--;

             current =iv_ruleDiscipline; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDiscipline895); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDiscipline"


    // $ANTLR start "ruleDiscipline"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:506:1: ruleDiscipline returns [EObject current=null] : (otherlv_0= 'discipline' ( (lv_name_1_0= RULE_STRING ) ) ) ;
    public final EObject ruleDiscipline() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;

         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:509:28: ( (otherlv_0= 'discipline' ( (lv_name_1_0= RULE_STRING ) ) ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:510:1: (otherlv_0= 'discipline' ( (lv_name_1_0= RULE_STRING ) ) )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:510:1: (otherlv_0= 'discipline' ( (lv_name_1_0= RULE_STRING ) ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:510:3: otherlv_0= 'discipline' ( (lv_name_1_0= RULE_STRING ) )
            {
            otherlv_0=(Token)match(input,23,FOLLOW_23_in_ruleDiscipline932); 

                	newLeafNode(otherlv_0, grammarAccess.getDisciplineAccess().getDisciplineKeyword_0());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:514:1: ( (lv_name_1_0= RULE_STRING ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:515:1: (lv_name_1_0= RULE_STRING )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:515:1: (lv_name_1_0= RULE_STRING )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:516:3: lv_name_1_0= RULE_STRING
            {
            lv_name_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleDiscipline949); 

            			newLeafNode(lv_name_1_0, grammarAccess.getDisciplineAccess().getNameSTRINGTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getDisciplineRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"STRING");
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDiscipline"


    // $ANTLR start "entryRuleRole"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:540:1: entryRuleRole returns [EObject current=null] : iv_ruleRole= ruleRole EOF ;
    public final EObject entryRuleRole() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRole = null;


        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:541:2: (iv_ruleRole= ruleRole EOF )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:542:2: iv_ruleRole= ruleRole EOF
            {
             newCompositeNode(grammarAccess.getRoleRule()); 
            pushFollow(FOLLOW_ruleRole_in_entryRuleRole990);
            iv_ruleRole=ruleRole();

            state._fsp--;

             current =iv_ruleRole; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRole1000); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRole"


    // $ANTLR start "ruleRole"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:549:1: ruleRole returns [EObject current=null] : (otherlv_0= 'name' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'description' ( (lv_description_3_0= RULE_STRING ) ) ) ;
    public final EObject ruleRole() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token lv_description_3_0=null;

         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:552:28: ( (otherlv_0= 'name' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'description' ( (lv_description_3_0= RULE_STRING ) ) ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:553:1: (otherlv_0= 'name' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'description' ( (lv_description_3_0= RULE_STRING ) ) )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:553:1: (otherlv_0= 'name' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'description' ( (lv_description_3_0= RULE_STRING ) ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:553:3: otherlv_0= 'name' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'description' ( (lv_description_3_0= RULE_STRING ) )
            {
            otherlv_0=(Token)match(input,24,FOLLOW_24_in_ruleRole1037); 

                	newLeafNode(otherlv_0, grammarAccess.getRoleAccess().getNameKeyword_0());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:557:1: ( (lv_name_1_0= RULE_ID ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:558:1: (lv_name_1_0= RULE_ID )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:558:1: (lv_name_1_0= RULE_ID )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:559:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRole1054); 

            			newLeafNode(lv_name_1_0, grammarAccess.getRoleAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getRoleRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,25,FOLLOW_25_in_ruleRole1071); 

                	newLeafNode(otherlv_2, grammarAccess.getRoleAccess().getDescriptionKeyword_2());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:579:1: ( (lv_description_3_0= RULE_STRING ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:580:1: (lv_description_3_0= RULE_STRING )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:580:1: (lv_description_3_0= RULE_STRING )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:581:3: lv_description_3_0= RULE_STRING
            {
            lv_description_3_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleRole1088); 

            			newLeafNode(lv_description_3_0, grammarAccess.getRoleAccess().getDescriptionSTRINGTerminalRuleCall_3_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getRoleRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"description",
                    		lv_description_3_0, 
                    		"STRING");
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRole"


    // $ANTLR start "entryRuleArtifact"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:605:1: entryRuleArtifact returns [EObject current=null] : iv_ruleArtifact= ruleArtifact EOF ;
    public final EObject entryRuleArtifact() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleArtifact = null;


        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:606:2: (iv_ruleArtifact= ruleArtifact EOF )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:607:2: iv_ruleArtifact= ruleArtifact EOF
            {
             newCompositeNode(grammarAccess.getArtifactRule()); 
            pushFollow(FOLLOW_ruleArtifact_in_entryRuleArtifact1129);
            iv_ruleArtifact=ruleArtifact();

            state._fsp--;

             current =iv_ruleArtifact; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleArtifact1139); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleArtifact"


    // $ANTLR start "ruleArtifact"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:614:1: ruleArtifact returns [EObject current=null] : (otherlv_0= 'name' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'description' ( (lv_description_3_0= RULE_STRING ) ) (otherlv_4= 'domain' ( (otherlv_5= RULE_ID ) ) )? (otherlv_6= 'purpose' ( (lv_purpose_7_0= RULE_STRING ) ) )? ) ;
    public final EObject ruleArtifact() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token lv_description_3_0=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token lv_purpose_7_0=null;

         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:617:28: ( (otherlv_0= 'name' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'description' ( (lv_description_3_0= RULE_STRING ) ) (otherlv_4= 'domain' ( (otherlv_5= RULE_ID ) ) )? (otherlv_6= 'purpose' ( (lv_purpose_7_0= RULE_STRING ) ) )? ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:618:1: (otherlv_0= 'name' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'description' ( (lv_description_3_0= RULE_STRING ) ) (otherlv_4= 'domain' ( (otherlv_5= RULE_ID ) ) )? (otherlv_6= 'purpose' ( (lv_purpose_7_0= RULE_STRING ) ) )? )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:618:1: (otherlv_0= 'name' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'description' ( (lv_description_3_0= RULE_STRING ) ) (otherlv_4= 'domain' ( (otherlv_5= RULE_ID ) ) )? (otherlv_6= 'purpose' ( (lv_purpose_7_0= RULE_STRING ) ) )? )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:618:3: otherlv_0= 'name' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'description' ( (lv_description_3_0= RULE_STRING ) ) (otherlv_4= 'domain' ( (otherlv_5= RULE_ID ) ) )? (otherlv_6= 'purpose' ( (lv_purpose_7_0= RULE_STRING ) ) )?
            {
            otherlv_0=(Token)match(input,24,FOLLOW_24_in_ruleArtifact1176); 

                	newLeafNode(otherlv_0, grammarAccess.getArtifactAccess().getNameKeyword_0());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:622:1: ( (lv_name_1_0= RULE_ID ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:623:1: (lv_name_1_0= RULE_ID )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:623:1: (lv_name_1_0= RULE_ID )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:624:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleArtifact1193); 

            			newLeafNode(lv_name_1_0, grammarAccess.getArtifactAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getArtifactRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,25,FOLLOW_25_in_ruleArtifact1210); 

                	newLeafNode(otherlv_2, grammarAccess.getArtifactAccess().getDescriptionKeyword_2());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:644:1: ( (lv_description_3_0= RULE_STRING ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:645:1: (lv_description_3_0= RULE_STRING )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:645:1: (lv_description_3_0= RULE_STRING )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:646:3: lv_description_3_0= RULE_STRING
            {
            lv_description_3_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleArtifact1227); 

            			newLeafNode(lv_description_3_0, grammarAccess.getArtifactAccess().getDescriptionSTRINGTerminalRuleCall_3_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getArtifactRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"description",
                    		lv_description_3_0, 
                    		"STRING");
            	    

            }


            }

            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:662:2: (otherlv_4= 'domain' ( (otherlv_5= RULE_ID ) ) )?
            int alt10=2;
            int LA10_0 = input.LA(1);

            if ( (LA10_0==26) ) {
                alt10=1;
            }
            switch (alt10) {
                case 1 :
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:662:4: otherlv_4= 'domain' ( (otherlv_5= RULE_ID ) )
                    {
                    otherlv_4=(Token)match(input,26,FOLLOW_26_in_ruleArtifact1245); 

                        	newLeafNode(otherlv_4, grammarAccess.getArtifactAccess().getDomainKeyword_4_0());
                        
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:666:1: ( (otherlv_5= RULE_ID ) )
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:667:1: (otherlv_5= RULE_ID )
                    {
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:667:1: (otherlv_5= RULE_ID )
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:668:3: otherlv_5= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getArtifactRule());
                    	        }
                            
                    otherlv_5=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleArtifact1265); 

                    		newLeafNode(otherlv_5, grammarAccess.getArtifactAccess().getDomainDisciplineCrossReference_4_1_0()); 
                    	

                    }


                    }


                    }
                    break;

            }

            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:679:4: (otherlv_6= 'purpose' ( (lv_purpose_7_0= RULE_STRING ) ) )?
            int alt11=2;
            int LA11_0 = input.LA(1);

            if ( (LA11_0==27) ) {
                alt11=1;
            }
            switch (alt11) {
                case 1 :
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:679:6: otherlv_6= 'purpose' ( (lv_purpose_7_0= RULE_STRING ) )
                    {
                    otherlv_6=(Token)match(input,27,FOLLOW_27_in_ruleArtifact1280); 

                        	newLeafNode(otherlv_6, grammarAccess.getArtifactAccess().getPurposeKeyword_5_0());
                        
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:683:1: ( (lv_purpose_7_0= RULE_STRING ) )
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:684:1: (lv_purpose_7_0= RULE_STRING )
                    {
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:684:1: (lv_purpose_7_0= RULE_STRING )
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:685:3: lv_purpose_7_0= RULE_STRING
                    {
                    lv_purpose_7_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleArtifact1297); 

                    			newLeafNode(lv_purpose_7_0, grammarAccess.getArtifactAccess().getPurposeSTRINGTerminalRuleCall_5_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getArtifactRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"purpose",
                            		lv_purpose_7_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleArtifact"


    // $ANTLR start "entryRuleTask"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:709:1: entryRuleTask returns [EObject current=null] : iv_ruleTask= ruleTask EOF ;
    public final EObject entryRuleTask() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTask = null;


        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:710:2: (iv_ruleTask= ruleTask EOF )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:711:2: iv_ruleTask= ruleTask EOF
            {
             newCompositeNode(grammarAccess.getTaskRule()); 
            pushFollow(FOLLOW_ruleTask_in_entryRuleTask1340);
            iv_ruleTask=ruleTask();

            state._fsp--;

             current =iv_ruleTask; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTask1350); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTask"


    // $ANTLR start "ruleTask"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:718:1: ruleTask returns [EObject current=null] : (otherlv_0= 'name' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'description' ( (lv_description_3_0= RULE_STRING ) ) (otherlv_4= 'discipline' ( (otherlv_5= RULE_ID ) ) )? (otherlv_6= 'purpose' ( (lv_purpose_7_0= RULE_STRING ) ) )? otherlv_8= 'roles {' ( (lv_rolesElement_9_0= ruleRoleElement ) )* otherlv_10= '}' otherlv_11= 'artifacts {' ( (lv_artifactsElement_12_0= ruleArtifactElement ) )* otherlv_13= '}' (otherlv_14= 'steps {' ( (lv_steps_15_0= ruleStep ) )* otherlv_16= '}' )? ) ;
    public final EObject ruleTask() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token lv_description_3_0=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token lv_purpose_7_0=null;
        Token otherlv_8=null;
        Token otherlv_10=null;
        Token otherlv_11=null;
        Token otherlv_13=null;
        Token otherlv_14=null;
        Token otherlv_16=null;
        EObject lv_rolesElement_9_0 = null;

        EObject lv_artifactsElement_12_0 = null;

        EObject lv_steps_15_0 = null;


         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:721:28: ( (otherlv_0= 'name' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'description' ( (lv_description_3_0= RULE_STRING ) ) (otherlv_4= 'discipline' ( (otherlv_5= RULE_ID ) ) )? (otherlv_6= 'purpose' ( (lv_purpose_7_0= RULE_STRING ) ) )? otherlv_8= 'roles {' ( (lv_rolesElement_9_0= ruleRoleElement ) )* otherlv_10= '}' otherlv_11= 'artifacts {' ( (lv_artifactsElement_12_0= ruleArtifactElement ) )* otherlv_13= '}' (otherlv_14= 'steps {' ( (lv_steps_15_0= ruleStep ) )* otherlv_16= '}' )? ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:722:1: (otherlv_0= 'name' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'description' ( (lv_description_3_0= RULE_STRING ) ) (otherlv_4= 'discipline' ( (otherlv_5= RULE_ID ) ) )? (otherlv_6= 'purpose' ( (lv_purpose_7_0= RULE_STRING ) ) )? otherlv_8= 'roles {' ( (lv_rolesElement_9_0= ruleRoleElement ) )* otherlv_10= '}' otherlv_11= 'artifacts {' ( (lv_artifactsElement_12_0= ruleArtifactElement ) )* otherlv_13= '}' (otherlv_14= 'steps {' ( (lv_steps_15_0= ruleStep ) )* otherlv_16= '}' )? )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:722:1: (otherlv_0= 'name' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'description' ( (lv_description_3_0= RULE_STRING ) ) (otherlv_4= 'discipline' ( (otherlv_5= RULE_ID ) ) )? (otherlv_6= 'purpose' ( (lv_purpose_7_0= RULE_STRING ) ) )? otherlv_8= 'roles {' ( (lv_rolesElement_9_0= ruleRoleElement ) )* otherlv_10= '}' otherlv_11= 'artifacts {' ( (lv_artifactsElement_12_0= ruleArtifactElement ) )* otherlv_13= '}' (otherlv_14= 'steps {' ( (lv_steps_15_0= ruleStep ) )* otherlv_16= '}' )? )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:722:3: otherlv_0= 'name' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'description' ( (lv_description_3_0= RULE_STRING ) ) (otherlv_4= 'discipline' ( (otherlv_5= RULE_ID ) ) )? (otherlv_6= 'purpose' ( (lv_purpose_7_0= RULE_STRING ) ) )? otherlv_8= 'roles {' ( (lv_rolesElement_9_0= ruleRoleElement ) )* otherlv_10= '}' otherlv_11= 'artifacts {' ( (lv_artifactsElement_12_0= ruleArtifactElement ) )* otherlv_13= '}' (otherlv_14= 'steps {' ( (lv_steps_15_0= ruleStep ) )* otherlv_16= '}' )?
            {
            otherlv_0=(Token)match(input,24,FOLLOW_24_in_ruleTask1387); 

                	newLeafNode(otherlv_0, grammarAccess.getTaskAccess().getNameKeyword_0());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:726:1: ( (lv_name_1_0= RULE_ID ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:727:1: (lv_name_1_0= RULE_ID )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:727:1: (lv_name_1_0= RULE_ID )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:728:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTask1404); 

            			newLeafNode(lv_name_1_0, grammarAccess.getTaskAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getTaskRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,25,FOLLOW_25_in_ruleTask1421); 

                	newLeafNode(otherlv_2, grammarAccess.getTaskAccess().getDescriptionKeyword_2());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:748:1: ( (lv_description_3_0= RULE_STRING ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:749:1: (lv_description_3_0= RULE_STRING )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:749:1: (lv_description_3_0= RULE_STRING )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:750:3: lv_description_3_0= RULE_STRING
            {
            lv_description_3_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleTask1438); 

            			newLeafNode(lv_description_3_0, grammarAccess.getTaskAccess().getDescriptionSTRINGTerminalRuleCall_3_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getTaskRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"description",
                    		lv_description_3_0, 
                    		"STRING");
            	    

            }


            }

            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:766:2: (otherlv_4= 'discipline' ( (otherlv_5= RULE_ID ) ) )?
            int alt12=2;
            int LA12_0 = input.LA(1);

            if ( (LA12_0==23) ) {
                alt12=1;
            }
            switch (alt12) {
                case 1 :
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:766:4: otherlv_4= 'discipline' ( (otherlv_5= RULE_ID ) )
                    {
                    otherlv_4=(Token)match(input,23,FOLLOW_23_in_ruleTask1456); 

                        	newLeafNode(otherlv_4, grammarAccess.getTaskAccess().getDisciplineKeyword_4_0());
                        
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:770:1: ( (otherlv_5= RULE_ID ) )
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:771:1: (otherlv_5= RULE_ID )
                    {
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:771:1: (otherlv_5= RULE_ID )
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:772:3: otherlv_5= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getTaskRule());
                    	        }
                            
                    otherlv_5=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTask1476); 

                    		newLeafNode(otherlv_5, grammarAccess.getTaskAccess().getDisciplineDisciplineCrossReference_4_1_0()); 
                    	

                    }


                    }


                    }
                    break;

            }

            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:783:4: (otherlv_6= 'purpose' ( (lv_purpose_7_0= RULE_STRING ) ) )?
            int alt13=2;
            int LA13_0 = input.LA(1);

            if ( (LA13_0==27) ) {
                alt13=1;
            }
            switch (alt13) {
                case 1 :
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:783:6: otherlv_6= 'purpose' ( (lv_purpose_7_0= RULE_STRING ) )
                    {
                    otherlv_6=(Token)match(input,27,FOLLOW_27_in_ruleTask1491); 

                        	newLeafNode(otherlv_6, grammarAccess.getTaskAccess().getPurposeKeyword_5_0());
                        
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:787:1: ( (lv_purpose_7_0= RULE_STRING ) )
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:788:1: (lv_purpose_7_0= RULE_STRING )
                    {
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:788:1: (lv_purpose_7_0= RULE_STRING )
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:789:3: lv_purpose_7_0= RULE_STRING
                    {
                    lv_purpose_7_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleTask1508); 

                    			newLeafNode(lv_purpose_7_0, grammarAccess.getTaskAccess().getPurposeSTRINGTerminalRuleCall_5_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getTaskRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"purpose",
                            		lv_purpose_7_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }
                    break;

            }

            otherlv_8=(Token)match(input,15,FOLLOW_15_in_ruleTask1527); 

                	newLeafNode(otherlv_8, grammarAccess.getTaskAccess().getRolesKeyword_6());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:809:1: ( (lv_rolesElement_9_0= ruleRoleElement ) )*
            loop14:
            do {
                int alt14=2;
                int LA14_0 = input.LA(1);

                if ( (LA14_0==RULE_ID) ) {
                    alt14=1;
                }


                switch (alt14) {
            	case 1 :
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:810:1: (lv_rolesElement_9_0= ruleRoleElement )
            	    {
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:810:1: (lv_rolesElement_9_0= ruleRoleElement )
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:811:3: lv_rolesElement_9_0= ruleRoleElement
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getTaskAccess().getRolesElementRoleElementParserRuleCall_7_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleRoleElement_in_ruleTask1548);
            	    lv_rolesElement_9_0=ruleRoleElement();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getTaskRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"rolesElement",
            	            		lv_rolesElement_9_0, 
            	            		"RoleElement");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop14;
                }
            } while (true);

            otherlv_10=(Token)match(input,14,FOLLOW_14_in_ruleTask1561); 

                	newLeafNode(otherlv_10, grammarAccess.getTaskAccess().getRightCurlyBracketKeyword_8());
                
            otherlv_11=(Token)match(input,17,FOLLOW_17_in_ruleTask1573); 

                	newLeafNode(otherlv_11, grammarAccess.getTaskAccess().getArtifactsKeyword_9());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:835:1: ( (lv_artifactsElement_12_0= ruleArtifactElement ) )*
            loop15:
            do {
                int alt15=2;
                int LA15_0 = input.LA(1);

                if ( (LA15_0==RULE_ID) ) {
                    alt15=1;
                }


                switch (alt15) {
            	case 1 :
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:836:1: (lv_artifactsElement_12_0= ruleArtifactElement )
            	    {
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:836:1: (lv_artifactsElement_12_0= ruleArtifactElement )
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:837:3: lv_artifactsElement_12_0= ruleArtifactElement
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getTaskAccess().getArtifactsElementArtifactElementParserRuleCall_10_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleArtifactElement_in_ruleTask1594);
            	    lv_artifactsElement_12_0=ruleArtifactElement();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getTaskRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"artifactsElement",
            	            		lv_artifactsElement_12_0, 
            	            		"ArtifactElement");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop15;
                }
            } while (true);

            otherlv_13=(Token)match(input,14,FOLLOW_14_in_ruleTask1607); 

                	newLeafNode(otherlv_13, grammarAccess.getTaskAccess().getRightCurlyBracketKeyword_11());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:857:1: (otherlv_14= 'steps {' ( (lv_steps_15_0= ruleStep ) )* otherlv_16= '}' )?
            int alt17=2;
            int LA17_0 = input.LA(1);

            if ( (LA17_0==28) ) {
                alt17=1;
            }
            switch (alt17) {
                case 1 :
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:857:3: otherlv_14= 'steps {' ( (lv_steps_15_0= ruleStep ) )* otherlv_16= '}'
                    {
                    otherlv_14=(Token)match(input,28,FOLLOW_28_in_ruleTask1620); 

                        	newLeafNode(otherlv_14, grammarAccess.getTaskAccess().getStepsKeyword_12_0());
                        
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:861:1: ( (lv_steps_15_0= ruleStep ) )*
                    loop16:
                    do {
                        int alt16=2;
                        int LA16_0 = input.LA(1);

                        if ( (LA16_0==24) ) {
                            alt16=1;
                        }


                        switch (alt16) {
                    	case 1 :
                    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:862:1: (lv_steps_15_0= ruleStep )
                    	    {
                    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:862:1: (lv_steps_15_0= ruleStep )
                    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:863:3: lv_steps_15_0= ruleStep
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getTaskAccess().getStepsStepParserRuleCall_12_1_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleStep_in_ruleTask1641);
                    	    lv_steps_15_0=ruleStep();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getTaskRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"steps",
                    	            		lv_steps_15_0, 
                    	            		"Step");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop16;
                        }
                    } while (true);

                    otherlv_16=(Token)match(input,14,FOLLOW_14_in_ruleTask1654); 

                        	newLeafNode(otherlv_16, grammarAccess.getTaskAccess().getRightCurlyBracketKeyword_12_2());
                        

                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTask"


    // $ANTLR start "entryRuleRoleElement"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:891:1: entryRuleRoleElement returns [EObject current=null] : iv_ruleRoleElement= ruleRoleElement EOF ;
    public final EObject entryRuleRoleElement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRoleElement = null;


        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:892:2: (iv_ruleRoleElement= ruleRoleElement EOF )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:893:2: iv_ruleRoleElement= ruleRoleElement EOF
            {
             newCompositeNode(grammarAccess.getRoleElementRule()); 
            pushFollow(FOLLOW_ruleRoleElement_in_entryRuleRoleElement1692);
            iv_ruleRoleElement=ruleRoleElement();

            state._fsp--;

             current =iv_ruleRoleElement; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRoleElement1702); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRoleElement"


    // $ANTLR start "ruleRoleElement"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:900:1: ruleRoleElement returns [EObject current=null] : ( ( (otherlv_0= RULE_ID ) ) ( ( (lv_primacy_1_1= 'primary' | lv_primacy_1_2= 'additional' ) ) ) ) ;
    public final EObject ruleRoleElement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_primacy_1_1=null;
        Token lv_primacy_1_2=null;

         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:903:28: ( ( ( (otherlv_0= RULE_ID ) ) ( ( (lv_primacy_1_1= 'primary' | lv_primacy_1_2= 'additional' ) ) ) ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:904:1: ( ( (otherlv_0= RULE_ID ) ) ( ( (lv_primacy_1_1= 'primary' | lv_primacy_1_2= 'additional' ) ) ) )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:904:1: ( ( (otherlv_0= RULE_ID ) ) ( ( (lv_primacy_1_1= 'primary' | lv_primacy_1_2= 'additional' ) ) ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:904:2: ( (otherlv_0= RULE_ID ) ) ( ( (lv_primacy_1_1= 'primary' | lv_primacy_1_2= 'additional' ) ) )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:904:2: ( (otherlv_0= RULE_ID ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:905:1: (otherlv_0= RULE_ID )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:905:1: (otherlv_0= RULE_ID )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:906:3: otherlv_0= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getRoleElementRule());
            	        }
                    
            otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRoleElement1747); 

            		newLeafNode(otherlv_0, grammarAccess.getRoleElementAccess().getRolesRoleCrossReference_0_0()); 
            	

            }


            }

            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:917:2: ( ( (lv_primacy_1_1= 'primary' | lv_primacy_1_2= 'additional' ) ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:918:1: ( (lv_primacy_1_1= 'primary' | lv_primacy_1_2= 'additional' ) )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:918:1: ( (lv_primacy_1_1= 'primary' | lv_primacy_1_2= 'additional' ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:919:1: (lv_primacy_1_1= 'primary' | lv_primacy_1_2= 'additional' )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:919:1: (lv_primacy_1_1= 'primary' | lv_primacy_1_2= 'additional' )
            int alt18=2;
            int LA18_0 = input.LA(1);

            if ( (LA18_0==29) ) {
                alt18=1;
            }
            else if ( (LA18_0==30) ) {
                alt18=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 18, 0, input);

                throw nvae;
            }
            switch (alt18) {
                case 1 :
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:920:3: lv_primacy_1_1= 'primary'
                    {
                    lv_primacy_1_1=(Token)match(input,29,FOLLOW_29_in_ruleRoleElement1767); 

                            newLeafNode(lv_primacy_1_1, grammarAccess.getRoleElementAccess().getPrimacyPrimaryKeyword_1_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getRoleElementRule());
                    	        }
                           		setWithLastConsumed(current, "primacy", lv_primacy_1_1, null);
                    	    

                    }
                    break;
                case 2 :
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:932:8: lv_primacy_1_2= 'additional'
                    {
                    lv_primacy_1_2=(Token)match(input,30,FOLLOW_30_in_ruleRoleElement1796); 

                            newLeafNode(lv_primacy_1_2, grammarAccess.getRoleElementAccess().getPrimacyAdditionalKeyword_1_0_1());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getRoleElementRule());
                    	        }
                           		setWithLastConsumed(current, "primacy", lv_primacy_1_2, null);
                    	    

                    }
                    break;

            }


            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRoleElement"


    // $ANTLR start "entryRuleArtifactElement"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:955:1: entryRuleArtifactElement returns [EObject current=null] : iv_ruleArtifactElement= ruleArtifactElement EOF ;
    public final EObject entryRuleArtifactElement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleArtifactElement = null;


        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:956:2: (iv_ruleArtifactElement= ruleArtifactElement EOF )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:957:2: iv_ruleArtifactElement= ruleArtifactElement EOF
            {
             newCompositeNode(grammarAccess.getArtifactElementRule()); 
            pushFollow(FOLLOW_ruleArtifactElement_in_entryRuleArtifactElement1848);
            iv_ruleArtifactElement=ruleArtifactElement();

            state._fsp--;

             current =iv_ruleArtifactElement; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleArtifactElement1858); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleArtifactElement"


    // $ANTLR start "ruleArtifactElement"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:964:1: ruleArtifactElement returns [EObject current=null] : ( ( (otherlv_0= RULE_ID ) ) ( ( (lv_pinType_1_1= 'input' | lv_pinType_1_2= 'output' ) ) ) ( ( (lv_variability_2_1= 'mandatory' | lv_variability_2_2= 'opcional' ) ) )? ) ;
    public final EObject ruleArtifactElement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_pinType_1_1=null;
        Token lv_pinType_1_2=null;
        Token lv_variability_2_1=null;
        Token lv_variability_2_2=null;

         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:967:28: ( ( ( (otherlv_0= RULE_ID ) ) ( ( (lv_pinType_1_1= 'input' | lv_pinType_1_2= 'output' ) ) ) ( ( (lv_variability_2_1= 'mandatory' | lv_variability_2_2= 'opcional' ) ) )? ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:968:1: ( ( (otherlv_0= RULE_ID ) ) ( ( (lv_pinType_1_1= 'input' | lv_pinType_1_2= 'output' ) ) ) ( ( (lv_variability_2_1= 'mandatory' | lv_variability_2_2= 'opcional' ) ) )? )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:968:1: ( ( (otherlv_0= RULE_ID ) ) ( ( (lv_pinType_1_1= 'input' | lv_pinType_1_2= 'output' ) ) ) ( ( (lv_variability_2_1= 'mandatory' | lv_variability_2_2= 'opcional' ) ) )? )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:968:2: ( (otherlv_0= RULE_ID ) ) ( ( (lv_pinType_1_1= 'input' | lv_pinType_1_2= 'output' ) ) ) ( ( (lv_variability_2_1= 'mandatory' | lv_variability_2_2= 'opcional' ) ) )?
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:968:2: ( (otherlv_0= RULE_ID ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:969:1: (otherlv_0= RULE_ID )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:969:1: (otherlv_0= RULE_ID )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:970:3: otherlv_0= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getArtifactElementRule());
            	        }
                    
            otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleArtifactElement1903); 

            		newLeafNode(otherlv_0, grammarAccess.getArtifactElementAccess().getArtifactsArtifactCrossReference_0_0()); 
            	

            }


            }

            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:981:2: ( ( (lv_pinType_1_1= 'input' | lv_pinType_1_2= 'output' ) ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:982:1: ( (lv_pinType_1_1= 'input' | lv_pinType_1_2= 'output' ) )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:982:1: ( (lv_pinType_1_1= 'input' | lv_pinType_1_2= 'output' ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:983:1: (lv_pinType_1_1= 'input' | lv_pinType_1_2= 'output' )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:983:1: (lv_pinType_1_1= 'input' | lv_pinType_1_2= 'output' )
            int alt19=2;
            int LA19_0 = input.LA(1);

            if ( (LA19_0==31) ) {
                alt19=1;
            }
            else if ( (LA19_0==32) ) {
                alt19=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 19, 0, input);

                throw nvae;
            }
            switch (alt19) {
                case 1 :
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:984:3: lv_pinType_1_1= 'input'
                    {
                    lv_pinType_1_1=(Token)match(input,31,FOLLOW_31_in_ruleArtifactElement1923); 

                            newLeafNode(lv_pinType_1_1, grammarAccess.getArtifactElementAccess().getPinTypeInputKeyword_1_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getArtifactElementRule());
                    	        }
                           		setWithLastConsumed(current, "pinType", lv_pinType_1_1, null);
                    	    

                    }
                    break;
                case 2 :
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:996:8: lv_pinType_1_2= 'output'
                    {
                    lv_pinType_1_2=(Token)match(input,32,FOLLOW_32_in_ruleArtifactElement1952); 

                            newLeafNode(lv_pinType_1_2, grammarAccess.getArtifactElementAccess().getPinTypeOutputKeyword_1_0_1());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getArtifactElementRule());
                    	        }
                           		setWithLastConsumed(current, "pinType", lv_pinType_1_2, null);
                    	    

                    }
                    break;

            }


            }


            }

            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1011:2: ( ( (lv_variability_2_1= 'mandatory' | lv_variability_2_2= 'opcional' ) ) )?
            int alt21=2;
            int LA21_0 = input.LA(1);

            if ( ((LA21_0>=33 && LA21_0<=34)) ) {
                alt21=1;
            }
            switch (alt21) {
                case 1 :
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1012:1: ( (lv_variability_2_1= 'mandatory' | lv_variability_2_2= 'opcional' ) )
                    {
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1012:1: ( (lv_variability_2_1= 'mandatory' | lv_variability_2_2= 'opcional' ) )
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1013:1: (lv_variability_2_1= 'mandatory' | lv_variability_2_2= 'opcional' )
                    {
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1013:1: (lv_variability_2_1= 'mandatory' | lv_variability_2_2= 'opcional' )
                    int alt20=2;
                    int LA20_0 = input.LA(1);

                    if ( (LA20_0==33) ) {
                        alt20=1;
                    }
                    else if ( (LA20_0==34) ) {
                        alt20=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 20, 0, input);

                        throw nvae;
                    }
                    switch (alt20) {
                        case 1 :
                            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1014:3: lv_variability_2_1= 'mandatory'
                            {
                            lv_variability_2_1=(Token)match(input,33,FOLLOW_33_in_ruleArtifactElement1988); 

                                    newLeafNode(lv_variability_2_1, grammarAccess.getArtifactElementAccess().getVariabilityMandatoryKeyword_2_0_0());
                                

                            	        if (current==null) {
                            	            current = createModelElement(grammarAccess.getArtifactElementRule());
                            	        }
                                   		setWithLastConsumed(current, "variability", lv_variability_2_1, null);
                            	    

                            }
                            break;
                        case 2 :
                            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1026:8: lv_variability_2_2= 'opcional'
                            {
                            lv_variability_2_2=(Token)match(input,34,FOLLOW_34_in_ruleArtifactElement2017); 

                                    newLeafNode(lv_variability_2_2, grammarAccess.getArtifactElementAccess().getVariabilityOpcionalKeyword_2_0_1());
                                

                            	        if (current==null) {
                            	            current = createModelElement(grammarAccess.getArtifactElementRule());
                            	        }
                                   		setWithLastConsumed(current, "variability", lv_variability_2_2, null);
                            	    

                            }
                            break;

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleArtifactElement"


    // $ANTLR start "entryRuleStep"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1049:1: entryRuleStep returns [EObject current=null] : iv_ruleStep= ruleStep EOF ;
    public final EObject entryRuleStep() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStep = null;


        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1050:2: (iv_ruleStep= ruleStep EOF )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1051:2: iv_ruleStep= ruleStep EOF
            {
             newCompositeNode(grammarAccess.getStepRule()); 
            pushFollow(FOLLOW_ruleStep_in_entryRuleStep2070);
            iv_ruleStep=ruleStep();

            state._fsp--;

             current =iv_ruleStep; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleStep2080); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStep"


    // $ANTLR start "ruleStep"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1058:1: ruleStep returns [EObject current=null] : (otherlv_0= 'name' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'previous' ( (otherlv_3= RULE_ID ) ) )? ) ;
    public final EObject ruleStep() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;

         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1061:28: ( (otherlv_0= 'name' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'previous' ( (otherlv_3= RULE_ID ) ) )? ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1062:1: (otherlv_0= 'name' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'previous' ( (otherlv_3= RULE_ID ) ) )? )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1062:1: (otherlv_0= 'name' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'previous' ( (otherlv_3= RULE_ID ) ) )? )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1062:3: otherlv_0= 'name' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'previous' ( (otherlv_3= RULE_ID ) ) )?
            {
            otherlv_0=(Token)match(input,24,FOLLOW_24_in_ruleStep2117); 

                	newLeafNode(otherlv_0, grammarAccess.getStepAccess().getNameKeyword_0());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1066:1: ( (lv_name_1_0= RULE_ID ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1067:1: (lv_name_1_0= RULE_ID )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1067:1: (lv_name_1_0= RULE_ID )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1068:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStep2134); 

            			newLeafNode(lv_name_1_0, grammarAccess.getStepAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getStepRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1084:2: (otherlv_2= 'previous' ( (otherlv_3= RULE_ID ) ) )?
            int alt22=2;
            int LA22_0 = input.LA(1);

            if ( (LA22_0==35) ) {
                alt22=1;
            }
            switch (alt22) {
                case 1 :
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1084:4: otherlv_2= 'previous' ( (otherlv_3= RULE_ID ) )
                    {
                    otherlv_2=(Token)match(input,35,FOLLOW_35_in_ruleStep2152); 

                        	newLeafNode(otherlv_2, grammarAccess.getStepAccess().getPreviousKeyword_2_0());
                        
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1088:1: ( (otherlv_3= RULE_ID ) )
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1089:1: (otherlv_3= RULE_ID )
                    {
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1089:1: (otherlv_3= RULE_ID )
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1090:3: otherlv_3= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getStepRule());
                    	        }
                            
                    otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStep2172); 

                    		newLeafNode(otherlv_3, grammarAccess.getStepAccess().getPreviousStepCrossReference_2_1_0()); 
                    	

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStep"


    // $ANTLR start "entryRulePhase"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1109:1: entryRulePhase returns [EObject current=null] : iv_rulePhase= rulePhase EOF ;
    public final EObject entryRulePhase() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePhase = null;


        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1110:2: (iv_rulePhase= rulePhase EOF )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1111:2: iv_rulePhase= rulePhase EOF
            {
             newCompositeNode(grammarAccess.getPhaseRule()); 
            pushFollow(FOLLOW_rulePhase_in_entryRulePhase2210);
            iv_rulePhase=rulePhase();

            state._fsp--;

             current =iv_rulePhase; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePhase2220); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePhase"


    // $ANTLR start "rulePhase"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1118:1: rulePhase returns [EObject current=null] : (otherlv_0= 'phase {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= 'iterations {' ( (lv_iterations_6_0= ruleIteration ) )* otherlv_7= '}' otherlv_8= '}' ) ;
    public final EObject rulePhase() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token lv_description_4_0=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        EObject lv_iterations_6_0 = null;


         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1121:28: ( (otherlv_0= 'phase {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= 'iterations {' ( (lv_iterations_6_0= ruleIteration ) )* otherlv_7= '}' otherlv_8= '}' ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1122:1: (otherlv_0= 'phase {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= 'iterations {' ( (lv_iterations_6_0= ruleIteration ) )* otherlv_7= '}' otherlv_8= '}' )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1122:1: (otherlv_0= 'phase {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= 'iterations {' ( (lv_iterations_6_0= ruleIteration ) )* otherlv_7= '}' otherlv_8= '}' )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1122:3: otherlv_0= 'phase {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= 'iterations {' ( (lv_iterations_6_0= ruleIteration ) )* otherlv_7= '}' otherlv_8= '}'
            {
            otherlv_0=(Token)match(input,36,FOLLOW_36_in_rulePhase2257); 

                	newLeafNode(otherlv_0, grammarAccess.getPhaseAccess().getPhaseKeyword_0());
                
            otherlv_1=(Token)match(input,24,FOLLOW_24_in_rulePhase2269); 

                	newLeafNode(otherlv_1, grammarAccess.getPhaseAccess().getNameKeyword_1());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1130:1: ( (lv_name_2_0= RULE_ID ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1131:1: (lv_name_2_0= RULE_ID )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1131:1: (lv_name_2_0= RULE_ID )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1132:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePhase2286); 

            			newLeafNode(lv_name_2_0, grammarAccess.getPhaseAccess().getNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getPhaseRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_2_0, 
                    		"ID");
            	    

            }


            }

            otherlv_3=(Token)match(input,25,FOLLOW_25_in_rulePhase2303); 

                	newLeafNode(otherlv_3, grammarAccess.getPhaseAccess().getDescriptionKeyword_3());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1152:1: ( (lv_description_4_0= RULE_STRING ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1153:1: (lv_description_4_0= RULE_STRING )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1153:1: (lv_description_4_0= RULE_STRING )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1154:3: lv_description_4_0= RULE_STRING
            {
            lv_description_4_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePhase2320); 

            			newLeafNode(lv_description_4_0, grammarAccess.getPhaseAccess().getDescriptionSTRINGTerminalRuleCall_4_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getPhaseRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"description",
                    		lv_description_4_0, 
                    		"STRING");
            	    

            }


            }

            otherlv_5=(Token)match(input,37,FOLLOW_37_in_rulePhase2337); 

                	newLeafNode(otherlv_5, grammarAccess.getPhaseAccess().getIterationsKeyword_5());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1174:1: ( (lv_iterations_6_0= ruleIteration ) )*
            loop23:
            do {
                int alt23=2;
                int LA23_0 = input.LA(1);

                if ( (LA23_0==38) ) {
                    alt23=1;
                }


                switch (alt23) {
            	case 1 :
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1175:1: (lv_iterations_6_0= ruleIteration )
            	    {
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1175:1: (lv_iterations_6_0= ruleIteration )
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1176:3: lv_iterations_6_0= ruleIteration
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getPhaseAccess().getIterationsIterationParserRuleCall_6_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleIteration_in_rulePhase2358);
            	    lv_iterations_6_0=ruleIteration();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getPhaseRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"iterations",
            	            		lv_iterations_6_0, 
            	            		"Iteration");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop23;
                }
            } while (true);

            otherlv_7=(Token)match(input,14,FOLLOW_14_in_rulePhase2371); 

                	newLeafNode(otherlv_7, grammarAccess.getPhaseAccess().getRightCurlyBracketKeyword_7());
                
            otherlv_8=(Token)match(input,14,FOLLOW_14_in_rulePhase2383); 

                	newLeafNode(otherlv_8, grammarAccess.getPhaseAccess().getRightCurlyBracketKeyword_8());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePhase"


    // $ANTLR start "entryRuleIteration"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1208:1: entryRuleIteration returns [EObject current=null] : iv_ruleIteration= ruleIteration EOF ;
    public final EObject entryRuleIteration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIteration = null;


        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1209:2: (iv_ruleIteration= ruleIteration EOF )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1210:2: iv_ruleIteration= ruleIteration EOF
            {
             newCompositeNode(grammarAccess.getIterationRule()); 
            pushFollow(FOLLOW_ruleIteration_in_entryRuleIteration2419);
            iv_ruleIteration=ruleIteration();

            state._fsp--;

             current =iv_ruleIteration; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleIteration2429); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIteration"


    // $ANTLR start "ruleIteration"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1217:1: ruleIteration returns [EObject current=null] : (otherlv_0= 'iteration {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= 'activitys {' ( (lv_ativitys_6_0= ruleActivity ) )* otherlv_7= '}' otherlv_8= '}' ) ;
    public final EObject ruleIteration() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token lv_description_4_0=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        EObject lv_ativitys_6_0 = null;


         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1220:28: ( (otherlv_0= 'iteration {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= 'activitys {' ( (lv_ativitys_6_0= ruleActivity ) )* otherlv_7= '}' otherlv_8= '}' ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1221:1: (otherlv_0= 'iteration {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= 'activitys {' ( (lv_ativitys_6_0= ruleActivity ) )* otherlv_7= '}' otherlv_8= '}' )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1221:1: (otherlv_0= 'iteration {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= 'activitys {' ( (lv_ativitys_6_0= ruleActivity ) )* otherlv_7= '}' otherlv_8= '}' )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1221:3: otherlv_0= 'iteration {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= 'activitys {' ( (lv_ativitys_6_0= ruleActivity ) )* otherlv_7= '}' otherlv_8= '}'
            {
            otherlv_0=(Token)match(input,38,FOLLOW_38_in_ruleIteration2466); 

                	newLeafNode(otherlv_0, grammarAccess.getIterationAccess().getIterationKeyword_0());
                
            otherlv_1=(Token)match(input,24,FOLLOW_24_in_ruleIteration2478); 

                	newLeafNode(otherlv_1, grammarAccess.getIterationAccess().getNameKeyword_1());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1229:1: ( (lv_name_2_0= RULE_ID ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1230:1: (lv_name_2_0= RULE_ID )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1230:1: (lv_name_2_0= RULE_ID )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1231:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleIteration2495); 

            			newLeafNode(lv_name_2_0, grammarAccess.getIterationAccess().getNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getIterationRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_2_0, 
                    		"ID");
            	    

            }


            }

            otherlv_3=(Token)match(input,25,FOLLOW_25_in_ruleIteration2512); 

                	newLeafNode(otherlv_3, grammarAccess.getIterationAccess().getDescriptionKeyword_3());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1251:1: ( (lv_description_4_0= RULE_STRING ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1252:1: (lv_description_4_0= RULE_STRING )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1252:1: (lv_description_4_0= RULE_STRING )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1253:3: lv_description_4_0= RULE_STRING
            {
            lv_description_4_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleIteration2529); 

            			newLeafNode(lv_description_4_0, grammarAccess.getIterationAccess().getDescriptionSTRINGTerminalRuleCall_4_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getIterationRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"description",
                    		lv_description_4_0, 
                    		"STRING");
            	    

            }


            }

            otherlv_5=(Token)match(input,39,FOLLOW_39_in_ruleIteration2546); 

                	newLeafNode(otherlv_5, grammarAccess.getIterationAccess().getActivitysKeyword_5());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1273:1: ( (lv_ativitys_6_0= ruleActivity ) )*
            loop24:
            do {
                int alt24=2;
                int LA24_0 = input.LA(1);

                if ( (LA24_0==40) ) {
                    alt24=1;
                }


                switch (alt24) {
            	case 1 :
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1274:1: (lv_ativitys_6_0= ruleActivity )
            	    {
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1274:1: (lv_ativitys_6_0= ruleActivity )
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1275:3: lv_ativitys_6_0= ruleActivity
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getIterationAccess().getAtivitysActivityParserRuleCall_6_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleActivity_in_ruleIteration2567);
            	    lv_ativitys_6_0=ruleActivity();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getIterationRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"ativitys",
            	            		lv_ativitys_6_0, 
            	            		"Activity");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop24;
                }
            } while (true);

            otherlv_7=(Token)match(input,14,FOLLOW_14_in_ruleIteration2580); 

                	newLeafNode(otherlv_7, grammarAccess.getIterationAccess().getRightCurlyBracketKeyword_7());
                
            otherlv_8=(Token)match(input,14,FOLLOW_14_in_ruleIteration2592); 

                	newLeafNode(otherlv_8, grammarAccess.getIterationAccess().getRightCurlyBracketKeyword_8());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIteration"


    // $ANTLR start "entryRuleActivity"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1307:1: entryRuleActivity returns [EObject current=null] : iv_ruleActivity= ruleActivity EOF ;
    public final EObject entryRuleActivity() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleActivity = null;


        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1308:2: (iv_ruleActivity= ruleActivity EOF )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1309:2: iv_ruleActivity= ruleActivity EOF
            {
             newCompositeNode(grammarAccess.getActivityRule()); 
            pushFollow(FOLLOW_ruleActivity_in_entryRuleActivity2628);
            iv_ruleActivity=ruleActivity();

            state._fsp--;

             current =iv_ruleActivity; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleActivity2638); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleActivity"


    // $ANTLR start "ruleActivity"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1316:1: ruleActivity returns [EObject current=null] : (otherlv_0= 'activity {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= 'tasks {' ( (otherlv_6= RULE_ID ) )* otherlv_7= '}' (otherlv_8= 'next' ( (otherlv_9= RULE_ID ) ) )? otherlv_10= '}' ) ;
    public final EObject ruleActivity() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token lv_description_4_0=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_9=null;
        Token otherlv_10=null;

         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1319:28: ( (otherlv_0= 'activity {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= 'tasks {' ( (otherlv_6= RULE_ID ) )* otherlv_7= '}' (otherlv_8= 'next' ( (otherlv_9= RULE_ID ) ) )? otherlv_10= '}' ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1320:1: (otherlv_0= 'activity {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= 'tasks {' ( (otherlv_6= RULE_ID ) )* otherlv_7= '}' (otherlv_8= 'next' ( (otherlv_9= RULE_ID ) ) )? otherlv_10= '}' )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1320:1: (otherlv_0= 'activity {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= 'tasks {' ( (otherlv_6= RULE_ID ) )* otherlv_7= '}' (otherlv_8= 'next' ( (otherlv_9= RULE_ID ) ) )? otherlv_10= '}' )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1320:3: otherlv_0= 'activity {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= 'tasks {' ( (otherlv_6= RULE_ID ) )* otherlv_7= '}' (otherlv_8= 'next' ( (otherlv_9= RULE_ID ) ) )? otherlv_10= '}'
            {
            otherlv_0=(Token)match(input,40,FOLLOW_40_in_ruleActivity2675); 

                	newLeafNode(otherlv_0, grammarAccess.getActivityAccess().getActivityKeyword_0());
                
            otherlv_1=(Token)match(input,24,FOLLOW_24_in_ruleActivity2687); 

                	newLeafNode(otherlv_1, grammarAccess.getActivityAccess().getNameKeyword_1());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1328:1: ( (lv_name_2_0= RULE_ID ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1329:1: (lv_name_2_0= RULE_ID )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1329:1: (lv_name_2_0= RULE_ID )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1330:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleActivity2704); 

            			newLeafNode(lv_name_2_0, grammarAccess.getActivityAccess().getNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getActivityRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_2_0, 
                    		"ID");
            	    

            }


            }

            otherlv_3=(Token)match(input,25,FOLLOW_25_in_ruleActivity2721); 

                	newLeafNode(otherlv_3, grammarAccess.getActivityAccess().getDescriptionKeyword_3());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1350:1: ( (lv_description_4_0= RULE_STRING ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1351:1: (lv_description_4_0= RULE_STRING )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1351:1: (lv_description_4_0= RULE_STRING )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1352:3: lv_description_4_0= RULE_STRING
            {
            lv_description_4_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleActivity2738); 

            			newLeafNode(lv_description_4_0, grammarAccess.getActivityAccess().getDescriptionSTRINGTerminalRuleCall_4_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getActivityRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"description",
                    		lv_description_4_0, 
                    		"STRING");
            	    

            }


            }

            otherlv_5=(Token)match(input,19,FOLLOW_19_in_ruleActivity2755); 

                	newLeafNode(otherlv_5, grammarAccess.getActivityAccess().getTasksKeyword_5());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1372:1: ( (otherlv_6= RULE_ID ) )*
            loop25:
            do {
                int alt25=2;
                int LA25_0 = input.LA(1);

                if ( (LA25_0==RULE_ID) ) {
                    alt25=1;
                }


                switch (alt25) {
            	case 1 :
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1373:1: (otherlv_6= RULE_ID )
            	    {
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1373:1: (otherlv_6= RULE_ID )
            	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1374:3: otherlv_6= RULE_ID
            	    {

            	    			if (current==null) {
            	    	            current = createModelElement(grammarAccess.getActivityRule());
            	    	        }
            	            
            	    otherlv_6=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleActivity2775); 

            	    		newLeafNode(otherlv_6, grammarAccess.getActivityAccess().getTasksTaskCrossReference_6_0()); 
            	    	

            	    }


            	    }
            	    break;

            	default :
            	    break loop25;
                }
            } while (true);

            otherlv_7=(Token)match(input,14,FOLLOW_14_in_ruleActivity2788); 

                	newLeafNode(otherlv_7, grammarAccess.getActivityAccess().getRightCurlyBracketKeyword_7());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1389:1: (otherlv_8= 'next' ( (otherlv_9= RULE_ID ) ) )?
            int alt26=2;
            int LA26_0 = input.LA(1);

            if ( (LA26_0==41) ) {
                alt26=1;
            }
            switch (alt26) {
                case 1 :
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1389:3: otherlv_8= 'next' ( (otherlv_9= RULE_ID ) )
                    {
                    otherlv_8=(Token)match(input,41,FOLLOW_41_in_ruleActivity2801); 

                        	newLeafNode(otherlv_8, grammarAccess.getActivityAccess().getNextKeyword_8_0());
                        
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1393:1: ( (otherlv_9= RULE_ID ) )
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1394:1: (otherlv_9= RULE_ID )
                    {
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1394:1: (otherlv_9= RULE_ID )
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1395:3: otherlv_9= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getActivityRule());
                    	        }
                            
                    otherlv_9=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleActivity2821); 

                    		newLeafNode(otherlv_9, grammarAccess.getActivityAccess().getNextActivityActivityCrossReference_8_1_0()); 
                    	

                    }


                    }


                    }
                    break;

            }

            otherlv_10=(Token)match(input,14,FOLLOW_14_in_ruleActivity2835); 

                	newLeafNode(otherlv_10, grammarAccess.getActivityAccess().getRightCurlyBracketKeyword_9());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleActivity"


    // $ANTLR start "entryRuleChecklist"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1418:1: entryRuleChecklist returns [EObject current=null] : iv_ruleChecklist= ruleChecklist EOF ;
    public final EObject entryRuleChecklist() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleChecklist = null;


        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1419:2: (iv_ruleChecklist= ruleChecklist EOF )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1420:2: iv_ruleChecklist= ruleChecklist EOF
            {
             newCompositeNode(grammarAccess.getChecklistRule()); 
            pushFollow(FOLLOW_ruleChecklist_in_entryRuleChecklist2871);
            iv_ruleChecklist=ruleChecklist();

            state._fsp--;

             current =iv_ruleChecklist; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleChecklist2881); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleChecklist"


    // $ANTLR start "ruleChecklist"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1427:1: ruleChecklist returns [EObject current=null] : (otherlv_0= 'checklist {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'checkitems {' ( (lv_checkItems_4_0= ruleCheckItem ) )* otherlv_5= '}' )? otherlv_6= '}' ) ;
    public final EObject ruleChecklist() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        EObject lv_checkItems_4_0 = null;


         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1430:28: ( (otherlv_0= 'checklist {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'checkitems {' ( (lv_checkItems_4_0= ruleCheckItem ) )* otherlv_5= '}' )? otherlv_6= '}' ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1431:1: (otherlv_0= 'checklist {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'checkitems {' ( (lv_checkItems_4_0= ruleCheckItem ) )* otherlv_5= '}' )? otherlv_6= '}' )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1431:1: (otherlv_0= 'checklist {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'checkitems {' ( (lv_checkItems_4_0= ruleCheckItem ) )* otherlv_5= '}' )? otherlv_6= '}' )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1431:3: otherlv_0= 'checklist {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'checkitems {' ( (lv_checkItems_4_0= ruleCheckItem ) )* otherlv_5= '}' )? otherlv_6= '}'
            {
            otherlv_0=(Token)match(input,42,FOLLOW_42_in_ruleChecklist2918); 

                	newLeafNode(otherlv_0, grammarAccess.getChecklistAccess().getChecklistKeyword_0());
                
            otherlv_1=(Token)match(input,24,FOLLOW_24_in_ruleChecklist2930); 

                	newLeafNode(otherlv_1, grammarAccess.getChecklistAccess().getNameKeyword_1());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1439:1: ( (lv_name_2_0= RULE_ID ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1440:1: (lv_name_2_0= RULE_ID )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1440:1: (lv_name_2_0= RULE_ID )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1441:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleChecklist2947); 

            			newLeafNode(lv_name_2_0, grammarAccess.getChecklistAccess().getNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getChecklistRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_2_0, 
                    		"ID");
            	    

            }


            }

            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1457:2: (otherlv_3= 'checkitems {' ( (lv_checkItems_4_0= ruleCheckItem ) )* otherlv_5= '}' )?
            int alt28=2;
            int LA28_0 = input.LA(1);

            if ( (LA28_0==43) ) {
                alt28=1;
            }
            switch (alt28) {
                case 1 :
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1457:4: otherlv_3= 'checkitems {' ( (lv_checkItems_4_0= ruleCheckItem ) )* otherlv_5= '}'
                    {
                    otherlv_3=(Token)match(input,43,FOLLOW_43_in_ruleChecklist2965); 

                        	newLeafNode(otherlv_3, grammarAccess.getChecklistAccess().getCheckitemsKeyword_3_0());
                        
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1461:1: ( (lv_checkItems_4_0= ruleCheckItem ) )*
                    loop27:
                    do {
                        int alt27=2;
                        int LA27_0 = input.LA(1);

                        if ( (LA27_0==24) ) {
                            alt27=1;
                        }


                        switch (alt27) {
                    	case 1 :
                    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1462:1: (lv_checkItems_4_0= ruleCheckItem )
                    	    {
                    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1462:1: (lv_checkItems_4_0= ruleCheckItem )
                    	    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1463:3: lv_checkItems_4_0= ruleCheckItem
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getChecklistAccess().getCheckItemsCheckItemParserRuleCall_3_1_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleCheckItem_in_ruleChecklist2986);
                    	    lv_checkItems_4_0=ruleCheckItem();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getChecklistRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"checkItems",
                    	            		lv_checkItems_4_0, 
                    	            		"CheckItem");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop27;
                        }
                    } while (true);

                    otherlv_5=(Token)match(input,14,FOLLOW_14_in_ruleChecklist2999); 

                        	newLeafNode(otherlv_5, grammarAccess.getChecklistAccess().getRightCurlyBracketKeyword_3_2());
                        

                    }
                    break;

            }

            otherlv_6=(Token)match(input,14,FOLLOW_14_in_ruleChecklist3013); 

                	newLeafNode(otherlv_6, grammarAccess.getChecklistAccess().getRightCurlyBracketKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleChecklist"


    // $ANTLR start "entryRuleCheckItem"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1495:1: entryRuleCheckItem returns [EObject current=null] : iv_ruleCheckItem= ruleCheckItem EOF ;
    public final EObject entryRuleCheckItem() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCheckItem = null;


        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1496:2: (iv_ruleCheckItem= ruleCheckItem EOF )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1497:2: iv_ruleCheckItem= ruleCheckItem EOF
            {
             newCompositeNode(grammarAccess.getCheckItemRule()); 
            pushFollow(FOLLOW_ruleCheckItem_in_entryRuleCheckItem3049);
            iv_ruleCheckItem=ruleCheckItem();

            state._fsp--;

             current =iv_ruleCheckItem; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCheckItem3059); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCheckItem"


    // $ANTLR start "ruleCheckItem"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1504:1: ruleCheckItem returns [EObject current=null] : (otherlv_0= 'name' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'previous' ( (otherlv_3= RULE_ID ) ) )? ) ;
    public final EObject ruleCheckItem() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;

         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1507:28: ( (otherlv_0= 'name' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'previous' ( (otherlv_3= RULE_ID ) ) )? ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1508:1: (otherlv_0= 'name' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'previous' ( (otherlv_3= RULE_ID ) ) )? )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1508:1: (otherlv_0= 'name' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'previous' ( (otherlv_3= RULE_ID ) ) )? )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1508:3: otherlv_0= 'name' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'previous' ( (otherlv_3= RULE_ID ) ) )?
            {
            otherlv_0=(Token)match(input,24,FOLLOW_24_in_ruleCheckItem3096); 

                	newLeafNode(otherlv_0, grammarAccess.getCheckItemAccess().getNameKeyword_0());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1512:1: ( (lv_name_1_0= RULE_ID ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1513:1: (lv_name_1_0= RULE_ID )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1513:1: (lv_name_1_0= RULE_ID )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1514:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleCheckItem3113); 

            			newLeafNode(lv_name_1_0, grammarAccess.getCheckItemAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getCheckItemRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1530:2: (otherlv_2= 'previous' ( (otherlv_3= RULE_ID ) ) )?
            int alt29=2;
            int LA29_0 = input.LA(1);

            if ( (LA29_0==35) ) {
                alt29=1;
            }
            switch (alt29) {
                case 1 :
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1530:4: otherlv_2= 'previous' ( (otherlv_3= RULE_ID ) )
                    {
                    otherlv_2=(Token)match(input,35,FOLLOW_35_in_ruleCheckItem3131); 

                        	newLeafNode(otherlv_2, grammarAccess.getCheckItemAccess().getPreviousKeyword_2_0());
                        
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1534:1: ( (otherlv_3= RULE_ID ) )
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1535:1: (otherlv_3= RULE_ID )
                    {
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1535:1: (otherlv_3= RULE_ID )
                    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1536:3: otherlv_3= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getCheckItemRule());
                    	        }
                            
                    otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleCheckItem3151); 

                    		newLeafNode(otherlv_3, grammarAccess.getCheckItemAccess().getPreviousCheckItemCrossReference_2_1_0()); 
                    	

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCheckItem"


    // $ANTLR start "entryRuleConcept"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1555:1: entryRuleConcept returns [EObject current=null] : iv_ruleConcept= ruleConcept EOF ;
    public final EObject entryRuleConcept() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConcept = null;


        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1556:2: (iv_ruleConcept= ruleConcept EOF )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1557:2: iv_ruleConcept= ruleConcept EOF
            {
             newCompositeNode(grammarAccess.getConceptRule()); 
            pushFollow(FOLLOW_ruleConcept_in_entryRuleConcept3189);
            iv_ruleConcept=ruleConcept();

            state._fsp--;

             current =iv_ruleConcept; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleConcept3199); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConcept"


    // $ANTLR start "ruleConcept"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1564:1: ruleConcept returns [EObject current=null] : (otherlv_0= 'concept {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' ) ;
    public final EObject ruleConcept() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token lv_description_4_0=null;
        Token otherlv_5=null;

         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1567:28: ( (otherlv_0= 'concept {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1568:1: (otherlv_0= 'concept {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1568:1: (otherlv_0= 'concept {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1568:3: otherlv_0= 'concept {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}'
            {
            otherlv_0=(Token)match(input,44,FOLLOW_44_in_ruleConcept3236); 

                	newLeafNode(otherlv_0, grammarAccess.getConceptAccess().getConceptKeyword_0());
                
            otherlv_1=(Token)match(input,24,FOLLOW_24_in_ruleConcept3248); 

                	newLeafNode(otherlv_1, grammarAccess.getConceptAccess().getNameKeyword_1());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1576:1: ( (lv_name_2_0= RULE_ID ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1577:1: (lv_name_2_0= RULE_ID )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1577:1: (lv_name_2_0= RULE_ID )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1578:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleConcept3265); 

            			newLeafNode(lv_name_2_0, grammarAccess.getConceptAccess().getNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getConceptRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_2_0, 
                    		"ID");
            	    

            }


            }

            otherlv_3=(Token)match(input,25,FOLLOW_25_in_ruleConcept3282); 

                	newLeafNode(otherlv_3, grammarAccess.getConceptAccess().getDescriptionKeyword_3());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1598:1: ( (lv_description_4_0= RULE_STRING ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1599:1: (lv_description_4_0= RULE_STRING )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1599:1: (lv_description_4_0= RULE_STRING )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1600:3: lv_description_4_0= RULE_STRING
            {
            lv_description_4_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConcept3299); 

            			newLeafNode(lv_description_4_0, grammarAccess.getConceptAccess().getDescriptionSTRINGTerminalRuleCall_4_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getConceptRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"description",
                    		lv_description_4_0, 
                    		"STRING");
            	    

            }


            }

            otherlv_5=(Token)match(input,14,FOLLOW_14_in_ruleConcept3316); 

                	newLeafNode(otherlv_5, grammarAccess.getConceptAccess().getRightCurlyBracketKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConcept"


    // $ANTLR start "entryRuleExample"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1628:1: entryRuleExample returns [EObject current=null] : iv_ruleExample= ruleExample EOF ;
    public final EObject entryRuleExample() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExample = null;


        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1629:2: (iv_ruleExample= ruleExample EOF )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1630:2: iv_ruleExample= ruleExample EOF
            {
             newCompositeNode(grammarAccess.getExampleRule()); 
            pushFollow(FOLLOW_ruleExample_in_entryRuleExample3352);
            iv_ruleExample=ruleExample();

            state._fsp--;

             current =iv_ruleExample; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleExample3362); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExample"


    // $ANTLR start "ruleExample"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1637:1: ruleExample returns [EObject current=null] : (otherlv_0= 'example {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' ) ;
    public final EObject ruleExample() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token lv_description_4_0=null;
        Token otherlv_5=null;

         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1640:28: ( (otherlv_0= 'example {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1641:1: (otherlv_0= 'example {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1641:1: (otherlv_0= 'example {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1641:3: otherlv_0= 'example {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}'
            {
            otherlv_0=(Token)match(input,45,FOLLOW_45_in_ruleExample3399); 

                	newLeafNode(otherlv_0, grammarAccess.getExampleAccess().getExampleKeyword_0());
                
            otherlv_1=(Token)match(input,24,FOLLOW_24_in_ruleExample3411); 

                	newLeafNode(otherlv_1, grammarAccess.getExampleAccess().getNameKeyword_1());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1649:1: ( (lv_name_2_0= RULE_ID ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1650:1: (lv_name_2_0= RULE_ID )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1650:1: (lv_name_2_0= RULE_ID )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1651:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleExample3428); 

            			newLeafNode(lv_name_2_0, grammarAccess.getExampleAccess().getNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getExampleRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_2_0, 
                    		"ID");
            	    

            }


            }

            otherlv_3=(Token)match(input,25,FOLLOW_25_in_ruleExample3445); 

                	newLeafNode(otherlv_3, grammarAccess.getExampleAccess().getDescriptionKeyword_3());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1671:1: ( (lv_description_4_0= RULE_STRING ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1672:1: (lv_description_4_0= RULE_STRING )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1672:1: (lv_description_4_0= RULE_STRING )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1673:3: lv_description_4_0= RULE_STRING
            {
            lv_description_4_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleExample3462); 

            			newLeafNode(lv_description_4_0, grammarAccess.getExampleAccess().getDescriptionSTRINGTerminalRuleCall_4_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getExampleRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"description",
                    		lv_description_4_0, 
                    		"STRING");
            	    

            }


            }

            otherlv_5=(Token)match(input,14,FOLLOW_14_in_ruleExample3479); 

                	newLeafNode(otherlv_5, grammarAccess.getExampleAccess().getRightCurlyBracketKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExample"


    // $ANTLR start "entryRuleGuideline"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1701:1: entryRuleGuideline returns [EObject current=null] : iv_ruleGuideline= ruleGuideline EOF ;
    public final EObject entryRuleGuideline() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleGuideline = null;


        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1702:2: (iv_ruleGuideline= ruleGuideline EOF )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1703:2: iv_ruleGuideline= ruleGuideline EOF
            {
             newCompositeNode(grammarAccess.getGuidelineRule()); 
            pushFollow(FOLLOW_ruleGuideline_in_entryRuleGuideline3515);
            iv_ruleGuideline=ruleGuideline();

            state._fsp--;

             current =iv_ruleGuideline; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleGuideline3525); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleGuideline"


    // $ANTLR start "ruleGuideline"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1710:1: ruleGuideline returns [EObject current=null] : (otherlv_0= 'guideline {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' ) ;
    public final EObject ruleGuideline() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token lv_description_4_0=null;
        Token otherlv_5=null;

         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1713:28: ( (otherlv_0= 'guideline {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1714:1: (otherlv_0= 'guideline {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1714:1: (otherlv_0= 'guideline {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1714:3: otherlv_0= 'guideline {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}'
            {
            otherlv_0=(Token)match(input,46,FOLLOW_46_in_ruleGuideline3562); 

                	newLeafNode(otherlv_0, grammarAccess.getGuidelineAccess().getGuidelineKeyword_0());
                
            otherlv_1=(Token)match(input,24,FOLLOW_24_in_ruleGuideline3574); 

                	newLeafNode(otherlv_1, grammarAccess.getGuidelineAccess().getNameKeyword_1());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1722:1: ( (lv_name_2_0= RULE_ID ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1723:1: (lv_name_2_0= RULE_ID )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1723:1: (lv_name_2_0= RULE_ID )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1724:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleGuideline3591); 

            			newLeafNode(lv_name_2_0, grammarAccess.getGuidelineAccess().getNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getGuidelineRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_2_0, 
                    		"ID");
            	    

            }


            }

            otherlv_3=(Token)match(input,25,FOLLOW_25_in_ruleGuideline3608); 

                	newLeafNode(otherlv_3, grammarAccess.getGuidelineAccess().getDescriptionKeyword_3());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1744:1: ( (lv_description_4_0= RULE_STRING ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1745:1: (lv_description_4_0= RULE_STRING )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1745:1: (lv_description_4_0= RULE_STRING )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1746:3: lv_description_4_0= RULE_STRING
            {
            lv_description_4_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleGuideline3625); 

            			newLeafNode(lv_description_4_0, grammarAccess.getGuidelineAccess().getDescriptionSTRINGTerminalRuleCall_4_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getGuidelineRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"description",
                    		lv_description_4_0, 
                    		"STRING");
            	    

            }


            }

            otherlv_5=(Token)match(input,14,FOLLOW_14_in_ruleGuideline3642); 

                	newLeafNode(otherlv_5, grammarAccess.getGuidelineAccess().getRightCurlyBracketKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleGuideline"


    // $ANTLR start "entryRulePractice"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1774:1: entryRulePractice returns [EObject current=null] : iv_rulePractice= rulePractice EOF ;
    public final EObject entryRulePractice() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePractice = null;


        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1775:2: (iv_rulePractice= rulePractice EOF )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1776:2: iv_rulePractice= rulePractice EOF
            {
             newCompositeNode(grammarAccess.getPracticeRule()); 
            pushFollow(FOLLOW_rulePractice_in_entryRulePractice3678);
            iv_rulePractice=rulePractice();

            state._fsp--;

             current =iv_rulePractice; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePractice3688); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePractice"


    // $ANTLR start "rulePractice"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1783:1: rulePractice returns [EObject current=null] : (otherlv_0= 'practice {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' ) ;
    public final EObject rulePractice() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token lv_description_4_0=null;
        Token otherlv_5=null;

         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1786:28: ( (otherlv_0= 'practice {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1787:1: (otherlv_0= 'practice {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1787:1: (otherlv_0= 'practice {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1787:3: otherlv_0= 'practice {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}'
            {
            otherlv_0=(Token)match(input,47,FOLLOW_47_in_rulePractice3725); 

                	newLeafNode(otherlv_0, grammarAccess.getPracticeAccess().getPracticeKeyword_0());
                
            otherlv_1=(Token)match(input,24,FOLLOW_24_in_rulePractice3737); 

                	newLeafNode(otherlv_1, grammarAccess.getPracticeAccess().getNameKeyword_1());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1795:1: ( (lv_name_2_0= RULE_ID ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1796:1: (lv_name_2_0= RULE_ID )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1796:1: (lv_name_2_0= RULE_ID )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1797:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePractice3754); 

            			newLeafNode(lv_name_2_0, grammarAccess.getPracticeAccess().getNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getPracticeRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_2_0, 
                    		"ID");
            	    

            }


            }

            otherlv_3=(Token)match(input,25,FOLLOW_25_in_rulePractice3771); 

                	newLeafNode(otherlv_3, grammarAccess.getPracticeAccess().getDescriptionKeyword_3());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1817:1: ( (lv_description_4_0= RULE_STRING ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1818:1: (lv_description_4_0= RULE_STRING )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1818:1: (lv_description_4_0= RULE_STRING )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1819:3: lv_description_4_0= RULE_STRING
            {
            lv_description_4_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePractice3788); 

            			newLeafNode(lv_description_4_0, grammarAccess.getPracticeAccess().getDescriptionSTRINGTerminalRuleCall_4_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getPracticeRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"description",
                    		lv_description_4_0, 
                    		"STRING");
            	    

            }


            }

            otherlv_5=(Token)match(input,14,FOLLOW_14_in_rulePractice3805); 

                	newLeafNode(otherlv_5, grammarAccess.getPracticeAccess().getRightCurlyBracketKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePractice"


    // $ANTLR start "entryRuleReference"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1847:1: entryRuleReference returns [EObject current=null] : iv_ruleReference= ruleReference EOF ;
    public final EObject entryRuleReference() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleReference = null;


        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1848:2: (iv_ruleReference= ruleReference EOF )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1849:2: iv_ruleReference= ruleReference EOF
            {
             newCompositeNode(grammarAccess.getReferenceRule()); 
            pushFollow(FOLLOW_ruleReference_in_entryRuleReference3841);
            iv_ruleReference=ruleReference();

            state._fsp--;

             current =iv_ruleReference; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleReference3851); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleReference"


    // $ANTLR start "ruleReference"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1856:1: ruleReference returns [EObject current=null] : (otherlv_0= 'reference {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' ) ;
    public final EObject ruleReference() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token lv_description_4_0=null;
        Token otherlv_5=null;

         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1859:28: ( (otherlv_0= 'reference {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1860:1: (otherlv_0= 'reference {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1860:1: (otherlv_0= 'reference {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1860:3: otherlv_0= 'reference {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}'
            {
            otherlv_0=(Token)match(input,48,FOLLOW_48_in_ruleReference3888); 

                	newLeafNode(otherlv_0, grammarAccess.getReferenceAccess().getReferenceKeyword_0());
                
            otherlv_1=(Token)match(input,24,FOLLOW_24_in_ruleReference3900); 

                	newLeafNode(otherlv_1, grammarAccess.getReferenceAccess().getNameKeyword_1());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1868:1: ( (lv_name_2_0= RULE_ID ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1869:1: (lv_name_2_0= RULE_ID )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1869:1: (lv_name_2_0= RULE_ID )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1870:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleReference3917); 

            			newLeafNode(lv_name_2_0, grammarAccess.getReferenceAccess().getNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getReferenceRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_2_0, 
                    		"ID");
            	    

            }


            }

            otherlv_3=(Token)match(input,25,FOLLOW_25_in_ruleReference3934); 

                	newLeafNode(otherlv_3, grammarAccess.getReferenceAccess().getDescriptionKeyword_3());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1890:1: ( (lv_description_4_0= RULE_STRING ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1891:1: (lv_description_4_0= RULE_STRING )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1891:1: (lv_description_4_0= RULE_STRING )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1892:3: lv_description_4_0= RULE_STRING
            {
            lv_description_4_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleReference3951); 

            			newLeafNode(lv_description_4_0, grammarAccess.getReferenceAccess().getDescriptionSTRINGTerminalRuleCall_4_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getReferenceRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"description",
                    		lv_description_4_0, 
                    		"STRING");
            	    

            }


            }

            otherlv_5=(Token)match(input,14,FOLLOW_14_in_ruleReference3968); 

                	newLeafNode(otherlv_5, grammarAccess.getReferenceAccess().getRightCurlyBracketKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleReference"


    // $ANTLR start "entryRuleReport"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1920:1: entryRuleReport returns [EObject current=null] : iv_ruleReport= ruleReport EOF ;
    public final EObject entryRuleReport() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleReport = null;


        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1921:2: (iv_ruleReport= ruleReport EOF )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1922:2: iv_ruleReport= ruleReport EOF
            {
             newCompositeNode(grammarAccess.getReportRule()); 
            pushFollow(FOLLOW_ruleReport_in_entryRuleReport4004);
            iv_ruleReport=ruleReport();

            state._fsp--;

             current =iv_ruleReport; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleReport4014); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleReport"


    // $ANTLR start "ruleReport"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1929:1: ruleReport returns [EObject current=null] : (otherlv_0= 'report {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' ) ;
    public final EObject ruleReport() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token lv_description_4_0=null;
        Token otherlv_5=null;

         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1932:28: ( (otherlv_0= 'report {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1933:1: (otherlv_0= 'report {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1933:1: (otherlv_0= 'report {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1933:3: otherlv_0= 'report {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}'
            {
            otherlv_0=(Token)match(input,49,FOLLOW_49_in_ruleReport4051); 

                	newLeafNode(otherlv_0, grammarAccess.getReportAccess().getReportKeyword_0());
                
            otherlv_1=(Token)match(input,24,FOLLOW_24_in_ruleReport4063); 

                	newLeafNode(otherlv_1, grammarAccess.getReportAccess().getNameKeyword_1());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1941:1: ( (lv_name_2_0= RULE_ID ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1942:1: (lv_name_2_0= RULE_ID )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1942:1: (lv_name_2_0= RULE_ID )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1943:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleReport4080); 

            			newLeafNode(lv_name_2_0, grammarAccess.getReportAccess().getNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getReportRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_2_0, 
                    		"ID");
            	    

            }


            }

            otherlv_3=(Token)match(input,25,FOLLOW_25_in_ruleReport4097); 

                	newLeafNode(otherlv_3, grammarAccess.getReportAccess().getDescriptionKeyword_3());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1963:1: ( (lv_description_4_0= RULE_STRING ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1964:1: (lv_description_4_0= RULE_STRING )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1964:1: (lv_description_4_0= RULE_STRING )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1965:3: lv_description_4_0= RULE_STRING
            {
            lv_description_4_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleReport4114); 

            			newLeafNode(lv_description_4_0, grammarAccess.getReportAccess().getDescriptionSTRINGTerminalRuleCall_4_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getReportRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"description",
                    		lv_description_4_0, 
                    		"STRING");
            	    

            }


            }

            otherlv_5=(Token)match(input,14,FOLLOW_14_in_ruleReport4131); 

                	newLeafNode(otherlv_5, grammarAccess.getReportAccess().getRightCurlyBracketKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleReport"


    // $ANTLR start "entryRuleRoadmap"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1993:1: entryRuleRoadmap returns [EObject current=null] : iv_ruleRoadmap= ruleRoadmap EOF ;
    public final EObject entryRuleRoadmap() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRoadmap = null;


        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1994:2: (iv_ruleRoadmap= ruleRoadmap EOF )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:1995:2: iv_ruleRoadmap= ruleRoadmap EOF
            {
             newCompositeNode(grammarAccess.getRoadmapRule()); 
            pushFollow(FOLLOW_ruleRoadmap_in_entryRuleRoadmap4167);
            iv_ruleRoadmap=ruleRoadmap();

            state._fsp--;

             current =iv_ruleRoadmap; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRoadmap4177); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRoadmap"


    // $ANTLR start "ruleRoadmap"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2002:1: ruleRoadmap returns [EObject current=null] : (otherlv_0= 'roadmap {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' ) ;
    public final EObject ruleRoadmap() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token lv_description_4_0=null;
        Token otherlv_5=null;

         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2005:28: ( (otherlv_0= 'roadmap {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2006:1: (otherlv_0= 'roadmap {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2006:1: (otherlv_0= 'roadmap {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2006:3: otherlv_0= 'roadmap {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}'
            {
            otherlv_0=(Token)match(input,50,FOLLOW_50_in_ruleRoadmap4214); 

                	newLeafNode(otherlv_0, grammarAccess.getRoadmapAccess().getRoadmapKeyword_0());
                
            otherlv_1=(Token)match(input,24,FOLLOW_24_in_ruleRoadmap4226); 

                	newLeafNode(otherlv_1, grammarAccess.getRoadmapAccess().getNameKeyword_1());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2014:1: ( (lv_name_2_0= RULE_ID ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2015:1: (lv_name_2_0= RULE_ID )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2015:1: (lv_name_2_0= RULE_ID )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2016:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRoadmap4243); 

            			newLeafNode(lv_name_2_0, grammarAccess.getRoadmapAccess().getNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getRoadmapRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_2_0, 
                    		"ID");
            	    

            }


            }

            otherlv_3=(Token)match(input,25,FOLLOW_25_in_ruleRoadmap4260); 

                	newLeafNode(otherlv_3, grammarAccess.getRoadmapAccess().getDescriptionKeyword_3());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2036:1: ( (lv_description_4_0= RULE_STRING ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2037:1: (lv_description_4_0= RULE_STRING )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2037:1: (lv_description_4_0= RULE_STRING )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2038:3: lv_description_4_0= RULE_STRING
            {
            lv_description_4_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleRoadmap4277); 

            			newLeafNode(lv_description_4_0, grammarAccess.getRoadmapAccess().getDescriptionSTRINGTerminalRuleCall_4_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getRoadmapRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"description",
                    		lv_description_4_0, 
                    		"STRING");
            	    

            }


            }

            otherlv_5=(Token)match(input,14,FOLLOW_14_in_ruleRoadmap4294); 

                	newLeafNode(otherlv_5, grammarAccess.getRoadmapAccess().getRightCurlyBracketKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRoadmap"


    // $ANTLR start "entryRuleTemplate"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2066:1: entryRuleTemplate returns [EObject current=null] : iv_ruleTemplate= ruleTemplate EOF ;
    public final EObject entryRuleTemplate() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTemplate = null;


        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2067:2: (iv_ruleTemplate= ruleTemplate EOF )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2068:2: iv_ruleTemplate= ruleTemplate EOF
            {
             newCompositeNode(grammarAccess.getTemplateRule()); 
            pushFollow(FOLLOW_ruleTemplate_in_entryRuleTemplate4330);
            iv_ruleTemplate=ruleTemplate();

            state._fsp--;

             current =iv_ruleTemplate; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTemplate4340); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTemplate"


    // $ANTLR start "ruleTemplate"
    // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2075:1: ruleTemplate returns [EObject current=null] : (otherlv_0= 'template {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' ) ;
    public final EObject ruleTemplate() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token lv_description_4_0=null;
        Token otherlv_5=null;

         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2078:28: ( (otherlv_0= 'template {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2079:1: (otherlv_0= 'template {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2079:1: (otherlv_0= 'template {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}' )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2079:3: otherlv_0= 'template {' otherlv_1= 'name' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= 'description' ( (lv_description_4_0= RULE_STRING ) ) otherlv_5= '}'
            {
            otherlv_0=(Token)match(input,51,FOLLOW_51_in_ruleTemplate4377); 

                	newLeafNode(otherlv_0, grammarAccess.getTemplateAccess().getTemplateKeyword_0());
                
            otherlv_1=(Token)match(input,24,FOLLOW_24_in_ruleTemplate4389); 

                	newLeafNode(otherlv_1, grammarAccess.getTemplateAccess().getNameKeyword_1());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2087:1: ( (lv_name_2_0= RULE_ID ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2088:1: (lv_name_2_0= RULE_ID )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2088:1: (lv_name_2_0= RULE_ID )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2089:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTemplate4406); 

            			newLeafNode(lv_name_2_0, grammarAccess.getTemplateAccess().getNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getTemplateRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_2_0, 
                    		"ID");
            	    

            }


            }

            otherlv_3=(Token)match(input,25,FOLLOW_25_in_ruleTemplate4423); 

                	newLeafNode(otherlv_3, grammarAccess.getTemplateAccess().getDescriptionKeyword_3());
                
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2109:1: ( (lv_description_4_0= RULE_STRING ) )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2110:1: (lv_description_4_0= RULE_STRING )
            {
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2110:1: (lv_description_4_0= RULE_STRING )
            // ../br.ufrn.dimap.ProcessDslLanguage/src-gen/br/ufrn/dimap/parser/antlr/internal/InternalProcessDsl.g:2111:3: lv_description_4_0= RULE_STRING
            {
            lv_description_4_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleTemplate4440); 

            			newLeafNode(lv_description_4_0, grammarAccess.getTemplateAccess().getDescriptionSTRINGTerminalRuleCall_4_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getTemplateRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"description",
                    		lv_description_4_0, 
                    		"STRING");
            	    

            }


            }

            otherlv_5=(Token)match(input,14,FOLLOW_14_in_ruleTemplate4457); 

                	newLeafNode(otherlv_5, grammarAccess.getTemplateAccess().getRightCurlyBracketKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTemplate"

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleModel_in_entryRuleModel75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleModel85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleProcess_in_ruleModel130 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleProcess_in_entryRuleProcess165 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleProcess175 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_ruleProcess212 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleProcess229 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleProcess246 = new BitSet(new long[]{0x00000000006AA000L});
    public static final BitSet FOLLOW_13_in_ruleProcess260 = new BitSet(new long[]{0x0000000000804000L});
    public static final BitSet FOLLOW_ruleDiscipline_in_ruleProcess281 = new BitSet(new long[]{0x0000000000804000L});
    public static final BitSet FOLLOW_14_in_ruleProcess294 = new BitSet(new long[]{0x00000000006AA000L});
    public static final BitSet FOLLOW_15_in_ruleProcess314 = new BitSet(new long[]{0x0000000000014000L});
    public static final BitSet FOLLOW_16_in_ruleProcess327 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_ruleRole_in_ruleProcess348 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleProcess360 = new BitSet(new long[]{0x0000000000014000L});
    public static final BitSet FOLLOW_14_in_ruleProcess374 = new BitSet(new long[]{0x00000000006AA000L});
    public static final BitSet FOLLOW_17_in_ruleProcess394 = new BitSet(new long[]{0x0000000000044000L});
    public static final BitSet FOLLOW_18_in_ruleProcess407 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_ruleArtifact_in_ruleProcess428 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleProcess440 = new BitSet(new long[]{0x0000000000044000L});
    public static final BitSet FOLLOW_14_in_ruleProcess454 = new BitSet(new long[]{0x00000000006AA000L});
    public static final BitSet FOLLOW_19_in_ruleProcess474 = new BitSet(new long[]{0x0000000000104000L});
    public static final BitSet FOLLOW_20_in_ruleProcess487 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_ruleTask_in_ruleProcess508 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleProcess520 = new BitSet(new long[]{0x0000000000104000L});
    public static final BitSet FOLLOW_14_in_ruleProcess534 = new BitSet(new long[]{0x00000000006AA000L});
    public static final BitSet FOLLOW_21_in_ruleProcess554 = new BitSet(new long[]{0x000FF40000004000L});
    public static final BitSet FOLLOW_ruleChecklist_in_ruleProcess577 = new BitSet(new long[]{0x000FF40000004000L});
    public static final BitSet FOLLOW_ruleConcept_in_ruleProcess596 = new BitSet(new long[]{0x000FF40000004000L});
    public static final BitSet FOLLOW_ruleExample_in_ruleProcess615 = new BitSet(new long[]{0x000FF40000004000L});
    public static final BitSet FOLLOW_ruleGuideline_in_ruleProcess634 = new BitSet(new long[]{0x000FF40000004000L});
    public static final BitSet FOLLOW_rulePractice_in_ruleProcess653 = new BitSet(new long[]{0x000FF40000004000L});
    public static final BitSet FOLLOW_ruleReference_in_ruleProcess672 = new BitSet(new long[]{0x000FF40000004000L});
    public static final BitSet FOLLOW_ruleReport_in_ruleProcess691 = new BitSet(new long[]{0x000FF40000004000L});
    public static final BitSet FOLLOW_ruleRoadmap_in_ruleProcess710 = new BitSet(new long[]{0x000FF40000004000L});
    public static final BitSet FOLLOW_ruleTemplate_in_ruleProcess729 = new BitSet(new long[]{0x000FF40000004000L});
    public static final BitSet FOLLOW_14_in_ruleProcess745 = new BitSet(new long[]{0x00000000006AA000L});
    public static final BitSet FOLLOW_22_in_ruleProcess760 = new BitSet(new long[]{0x0000015000004000L});
    public static final BitSet FOLLOW_rulePhase_in_ruleProcess783 = new BitSet(new long[]{0x0000015000004000L});
    public static final BitSet FOLLOW_ruleIteration_in_ruleProcess802 = new BitSet(new long[]{0x0000015000004000L});
    public static final BitSet FOLLOW_ruleActivity_in_ruleProcess821 = new BitSet(new long[]{0x0000015000004000L});
    public static final BitSet FOLLOW_14_in_ruleProcess837 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleProcess849 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDiscipline_in_entryRuleDiscipline885 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDiscipline895 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_23_in_ruleDiscipline932 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleDiscipline949 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRole_in_entryRuleRole990 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRole1000 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_24_in_ruleRole1037 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRole1054 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleRole1071 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleRole1088 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleArtifact_in_entryRuleArtifact1129 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleArtifact1139 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_24_in_ruleArtifact1176 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleArtifact1193 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleArtifact1210 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleArtifact1227 = new BitSet(new long[]{0x000000000C000002L});
    public static final BitSet FOLLOW_26_in_ruleArtifact1245 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleArtifact1265 = new BitSet(new long[]{0x0000000008000002L});
    public static final BitSet FOLLOW_27_in_ruleArtifact1280 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleArtifact1297 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTask_in_entryRuleTask1340 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTask1350 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_24_in_ruleTask1387 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleTask1404 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleTask1421 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleTask1438 = new BitSet(new long[]{0x0000000008808000L});
    public static final BitSet FOLLOW_23_in_ruleTask1456 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleTask1476 = new BitSet(new long[]{0x0000000008008000L});
    public static final BitSet FOLLOW_27_in_ruleTask1491 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleTask1508 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleTask1527 = new BitSet(new long[]{0x0000000000004020L});
    public static final BitSet FOLLOW_ruleRoleElement_in_ruleTask1548 = new BitSet(new long[]{0x0000000000004020L});
    public static final BitSet FOLLOW_14_in_ruleTask1561 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleTask1573 = new BitSet(new long[]{0x0000000000004020L});
    public static final BitSet FOLLOW_ruleArtifactElement_in_ruleTask1594 = new BitSet(new long[]{0x0000000000004020L});
    public static final BitSet FOLLOW_14_in_ruleTask1607 = new BitSet(new long[]{0x0000000010000002L});
    public static final BitSet FOLLOW_28_in_ruleTask1620 = new BitSet(new long[]{0x0000000001004000L});
    public static final BitSet FOLLOW_ruleStep_in_ruleTask1641 = new BitSet(new long[]{0x0000000001004000L});
    public static final BitSet FOLLOW_14_in_ruleTask1654 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRoleElement_in_entryRuleRoleElement1692 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRoleElement1702 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRoleElement1747 = new BitSet(new long[]{0x0000000060000000L});
    public static final BitSet FOLLOW_29_in_ruleRoleElement1767 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_30_in_ruleRoleElement1796 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleArtifactElement_in_entryRuleArtifactElement1848 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleArtifactElement1858 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleArtifactElement1903 = new BitSet(new long[]{0x0000000180000000L});
    public static final BitSet FOLLOW_31_in_ruleArtifactElement1923 = new BitSet(new long[]{0x0000000600000002L});
    public static final BitSet FOLLOW_32_in_ruleArtifactElement1952 = new BitSet(new long[]{0x0000000600000002L});
    public static final BitSet FOLLOW_33_in_ruleArtifactElement1988 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_ruleArtifactElement2017 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStep_in_entryRuleStep2070 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStep2080 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_24_in_ruleStep2117 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleStep2134 = new BitSet(new long[]{0x0000000800000002L});
    public static final BitSet FOLLOW_35_in_ruleStep2152 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleStep2172 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePhase_in_entryRulePhase2210 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePhase2220 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_36_in_rulePhase2257 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_rulePhase2269 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_rulePhase2286 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_rulePhase2303 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_rulePhase2320 = new BitSet(new long[]{0x0000002000000000L});
    public static final BitSet FOLLOW_37_in_rulePhase2337 = new BitSet(new long[]{0x0000004000004000L});
    public static final BitSet FOLLOW_ruleIteration_in_rulePhase2358 = new BitSet(new long[]{0x0000004000004000L});
    public static final BitSet FOLLOW_14_in_rulePhase2371 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_rulePhase2383 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIteration_in_entryRuleIteration2419 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIteration2429 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_38_in_ruleIteration2466 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleIteration2478 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleIteration2495 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleIteration2512 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleIteration2529 = new BitSet(new long[]{0x0000008000000000L});
    public static final BitSet FOLLOW_39_in_ruleIteration2546 = new BitSet(new long[]{0x0000015000004000L});
    public static final BitSet FOLLOW_ruleActivity_in_ruleIteration2567 = new BitSet(new long[]{0x0000015000004000L});
    public static final BitSet FOLLOW_14_in_ruleIteration2580 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleIteration2592 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleActivity_in_entryRuleActivity2628 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleActivity2638 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_40_in_ruleActivity2675 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleActivity2687 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleActivity2704 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleActivity2721 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleActivity2738 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleActivity2755 = new BitSet(new long[]{0x0000000000004020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleActivity2775 = new BitSet(new long[]{0x0000000000004020L});
    public static final BitSet FOLLOW_14_in_ruleActivity2788 = new BitSet(new long[]{0x0000020000004000L});
    public static final BitSet FOLLOW_41_in_ruleActivity2801 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleActivity2821 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleActivity2835 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleChecklist_in_entryRuleChecklist2871 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleChecklist2881 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_42_in_ruleChecklist2918 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleChecklist2930 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleChecklist2947 = new BitSet(new long[]{0x0000080000004000L});
    public static final BitSet FOLLOW_43_in_ruleChecklist2965 = new BitSet(new long[]{0x0000000001004000L});
    public static final BitSet FOLLOW_ruleCheckItem_in_ruleChecklist2986 = new BitSet(new long[]{0x0000000001004000L});
    public static final BitSet FOLLOW_14_in_ruleChecklist2999 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleChecklist3013 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCheckItem_in_entryRuleCheckItem3049 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCheckItem3059 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_24_in_ruleCheckItem3096 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleCheckItem3113 = new BitSet(new long[]{0x0000000800000002L});
    public static final BitSet FOLLOW_35_in_ruleCheckItem3131 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleCheckItem3151 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConcept_in_entryRuleConcept3189 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleConcept3199 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_44_in_ruleConcept3236 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleConcept3248 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleConcept3265 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleConcept3282 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConcept3299 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleConcept3316 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExample_in_entryRuleExample3352 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExample3362 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_45_in_ruleExample3399 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleExample3411 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleExample3428 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleExample3445 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleExample3462 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleExample3479 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleGuideline_in_entryRuleGuideline3515 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleGuideline3525 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleGuideline3562 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleGuideline3574 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleGuideline3591 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleGuideline3608 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleGuideline3625 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleGuideline3642 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePractice_in_entryRulePractice3678 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePractice3688 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_47_in_rulePractice3725 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_rulePractice3737 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_rulePractice3754 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_rulePractice3771 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_rulePractice3788 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_rulePractice3805 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleReference_in_entryRuleReference3841 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleReference3851 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_48_in_ruleReference3888 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleReference3900 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleReference3917 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleReference3934 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleReference3951 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleReference3968 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleReport_in_entryRuleReport4004 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleReport4014 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_49_in_ruleReport4051 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleReport4063 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleReport4080 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleReport4097 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleReport4114 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleReport4131 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRoadmap_in_entryRuleRoadmap4167 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRoadmap4177 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_50_in_ruleRoadmap4214 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleRoadmap4226 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRoadmap4243 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleRoadmap4260 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleRoadmap4277 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleRoadmap4294 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTemplate_in_entryRuleTemplate4330 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTemplate4340 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_51_in_ruleTemplate4377 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleTemplate4389 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleTemplate4406 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleTemplate4423 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleTemplate4440 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleTemplate4457 = new BitSet(new long[]{0x0000000000000002L});

}